【譯】TypeScript 的類型(一)

JavaScript 很酷。可是你知道比JavaScript更酷的是什麼嗎?javascript

是Typescript。html

你能說出下面代碼哪裏出錯了嗎?java

img

img

TypeScript (左) and ES6 (右)git

看到紅色下劃線了嗎?這是Typescript給咱們的錯誤提示。github

你可能找到這個錯誤了—— toUpperCase() 是 字符串類型的方法。咱們把一個整數做爲參數傳入,不過整數不能調用 toUpperCase()typescript

咱們來修改它,限制 nameToUpperCase() 的參數爲字符串類型。json

如今咱們沒必要記住 nameToUpperCase() 只能接受一個字符串做爲參數,讓Typescript幫咱們來記住它。想象下,若是要記住成千上萬個方法以及其參數的類型,那會瘋掉的。數組

可是仍是出現紅色提示。這是爲何?由於咱們傳的仍是一個數字!咱們如今來傳個字符串。瀏覽器

注意到Typescript會編譯成JavaScript(它只是JavaScript的超集,像C++和C)bash

Typescript的靜態類型檢查簡單而強大。

在上個月,TypeScript已經下載了10,327,953次。

1*12nXNNgYHMLqWl7FWe4mwQ

Typescript與Flow的下載量比較

讓咱們來探索Typescript世界——咱們稍後會深刻探討,首先明白Typescript是什麼以及爲何存在。

TypeScript於2012年10月1日首次亮相。 它起源於微軟,由 Anders Hejlsber(領導設計C#)和他的團隊開發。

Typescript徹底公開在Github上,因此任何人均可以閱讀源代碼和貢獻。

Typescript——JavaScript的超集

怎麼開始

很簡單,咱們須要的是NPM包。打開你的終端,而後跟着如下輸入:

咱們應該作好Typescript的配置。

img

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs"
    }
}
複製代碼

咱們須要作的是建立.ts 文件,並告訴Typescript監測代碼的變化,並進行編譯。

執行如下命令進行代碼監測:

tsc -w
複製代碼

tsc—Typescript的編譯指令

這就是咱們最終生成的文件

img

如今你能夠按照咱們的例子來完成!

咱們在.ts文件裏寫代碼,.js文件是給瀏覽器讀取的。在本文的例子中,咱們沒有用瀏覽器,而是使用Node.js(Node也能讀.js

img

JavaScript有七種數據類型,其中六種是基礎類型,剩下的一種是對象類型。

JavaScript 的基礎類型有:

  • String
  • Number
  • Undefined
  • Null
  • Symbol
  • Bollean

剩下的是對象類型

img

Typescript除了和JavaScript同樣有基礎類型,也擴充了額外的類型。

這些額外的類型是可選的,若是你不熟悉,你不必定要使用。

額外的類型以下:

Tuple

img

能夠把 tuple 想象爲有結構的數組。你按順序預先定義數組元素的類型。

若是咱們不按 tuple 的相應位置的類型分配相應的類型,Typescript會提示咱們規則錯誤。

void

tuple 指望第一個變量是 number 類型—在這裏例子中,它不是數字類型,而是字符串 "Indrek" ,因此會提示咱們錯誤。

在typescript裏,你必須在函數裏定義返回類型。像這樣:有些函數沒有 return語句

img

注意咱們如何聲明參數類型和返回類型 - 二者都是字符串。

如今看看若是咱們不返回任何東西會發生什麼?

能夠看到Typescript編譯程序告訴咱們:"你定義了返回類型爲字符串,但如今卻沒有返回任何東西。如今告訴你,咱們沒有遵照提示的規則。"

若是咱們不知道須要返回什麼時怎麼辦?這種狀況咱們能夠使用 Void 定義返回類型。

img

可是在這個例子裏,若是咱們要返回一個值,咱們就不能定義返回類型爲 void

Any

img

any 類型很是簡單。若是咱們不知道是什麼類型時能夠使用 any

img

注意到咱們屢次給 person 從新分配不一樣類型的值。第一次是字符串,而後是數字,最後是布爾值。咱們不肯定其類型。

現實世界的例子是,若是你使用第三方庫而你不知道類型。

咱們來建立一個數組,把一些數據存儲在數組裏。數組是由不一樣類型的數據組成,不單單是字符串,或數字,又或者有結構的類型,像 tupleany類型就會起做用。

img

若是你的數組裏只是一種類型,你能夠明確告訴編譯器,像這樣:

img

若是你想了解更多,這裏有文檔介紹。

中文文檔:www.tslang.cn/docs/handbo…

英文文檔:www.typescriptlang.org/docs/handbo…

相關文章
相關標籤/搜索