- 原文地址:TypeScript — JavaScript with superpowers
- 原文做者:Indrek Lasn
- 譯者:liaozeen
JavaScript 很酷。可是你知道比JavaScript更酷的是什麼嗎?javascript
是Typescript。html
你能說出下面代碼哪裏出錯了嗎?java
TypeScript (左) and ES6 (右)git
看到紅色下劃線了嗎?這是Typescript給咱們的錯誤提示。github
你可能找到這個錯誤了—— toUpperCase()
是 字符串類型的方法。咱們把一個整數做爲參數傳入,不過整數不能調用 toUpperCase()
。typescript
咱們來修改它,限制 nameToUpperCase()
的參數爲字符串類型。json
如今咱們沒必要記住 nameToUpperCase()
只能接受一個字符串做爲參數,讓Typescript幫咱們來記住它。想象下,若是要記住成千上萬個方法以及其參數的類型,那會瘋掉的。數組
可是仍是出現紅色提示。這是爲何?由於咱們傳的仍是一個數字!咱們如今來傳個字符串。瀏覽器
注意到Typescript會編譯成JavaScript(它只是JavaScript的超集,像C++和C)bash
Typescript的靜態類型檢查簡單而強大。
在上個月,TypeScript已經下載了10,327,953次。
Typescript與Flow的下載量比較
讓咱們來探索Typescript世界——咱們稍後會深刻探討,首先明白Typescript是什麼以及爲何存在。
TypeScript於2012年10月1日首次亮相。 它起源於微軟,由 Anders Hejlsber(領導設計C#)和他的團隊開發。
Typescript徹底公開在Github上,因此任何人均可以閱讀源代碼和貢獻。
Typescript——JavaScript的超集
很簡單,咱們須要的是NPM包。打開你的終端,而後跟着如下輸入:
咱們應該作好Typescript的配置。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs"
}
}
複製代碼
咱們須要作的是建立.ts
文件,並告訴Typescript監測代碼的變化,並進行編譯。
執行如下命令進行代碼監測:
tsc -w
複製代碼
tsc—Typescript的編譯指令
這就是咱們最終生成的文件
如今你能夠按照咱們的例子來完成!
咱們在.ts
文件裏寫代碼,.js
文件是給瀏覽器讀取的。在本文的例子中,咱們沒有用瀏覽器,而是使用Node.js(Node也能讀.js
)
JavaScript有七種數據類型,其中六種是基礎類型,剩下的一種是對象類型。
JavaScript 的基礎類型有:
剩下的是對象類型
Typescript除了和JavaScript同樣有基礎類型,也擴充了額外的類型。
這些額外的類型是可選的,若是你不熟悉,你不必定要使用。
額外的類型以下:
能夠把 tuple 想象爲有結構的數組。你按順序預先定義數組元素的類型。
若是咱們不按 tuple 的相應位置的類型分配相應的類型,Typescript會提示咱們規則錯誤。
tuple
指望第一個變量是 number
類型—在這裏例子中,它不是數字類型,而是字符串 "Indrek"
,因此會提示咱們錯誤。
在typescript裏,你必須在函數裏定義返回類型。像這樣:有些函數沒有 return語句
注意咱們如何聲明參數類型和返回類型 - 二者都是字符串。
如今看看若是咱們不返回任何東西會發生什麼?
能夠看到Typescript編譯程序告訴咱們:"你定義了返回類型爲字符串,但如今卻沒有返回任何東西。如今告訴你,咱們沒有遵照提示的規則。"
若是咱們不知道須要返回什麼時怎麼辦?這種狀況咱們能夠使用 Void
定義返回類型。
可是在這個例子裏,若是咱們要返回一個值,咱們就不能定義返回類型爲 void
。
any
類型很是簡單。若是咱們不知道是什麼類型時能夠使用 any
。
注意到咱們屢次給 person
從新分配不一樣類型的值。第一次是字符串,而後是數字,最後是布爾值。咱們不肯定其類型。
現實世界的例子是,若是你使用第三方庫而你不知道類型。
咱們來建立一個數組,把一些數據存儲在數組裏。數組是由不一樣類型的數據組成,不單單是字符串,或數字,又或者有結構的類型,像 tuple
。any
類型就會起做用。
若是你的數組裏只是一種類型,你能夠明確告訴編譯器,像這樣:
若是你想了解更多,這裏有文檔介紹。