TypeScript 是什麼?
TypeScript 是微軟開發、開放原始碼的程式語言,是 JavaScript 的超集合(superset):所有合法的 JavaScript 都是合法的 TypeScript。它在 JavaScript 之上加了一套靜態型別系統,讓你在寫程式、還沒執行之前,編輯器與編譯器就能提早抓到「傳錯型別」「拼錯屬性名稱」這類錯誤。
TypeScript 程式碼最終會編譯(transpile)成一般的 JavaScript 才能在瀏覽器或 Node.js 執行——型別只存在於開發階段,執行期不會檢查型別,也不會拖慢效能。完整規格請以 官方文件 為準;想動手改程式,用 官方 Playground。
最必須掌握的 20%
TypeScript 的型別系統很龐大,但日常開發真正常用的觀念集中在少數幾個地方。先把這四件事練熟,再往泛型與進階型別推進即可。
| 優先 | 你要會的事 | 為什麼是這 20% |
|---|---|---|
| 1 | 基本型別與型別註記:string、number、boolean、陣列、union、any/unknown |
型別註記是所有 TS 程式碼的基礎語法 |
| 2 | interface 與 type:描述物件的形狀 |
真實專案的資料(API 回傳、props)幾乎都是物件 |
| 3 | 函式的參數與回傳型別、可選參數 ?、預設值 |
函式簽章寫清楚,呼叫端才會被正確檢查 |
| 4 | class 的屬性、存取修飾詞(public/private/readonly)與泛型 <T> 基礎 |
物件導向風格的程式碼與可重用元件都靠這兩者 |
會寫小型別後,再學 型別縮小與泛型進階;要把 TS 接進 React 或 Node.js 專案,再看 實務整合。不習慣看文字時,先看 影音教學。
建議學習順序
跟純 JavaScript 差在哪
同一段邏輯,JavaScript 執行到一半才會噴錯;TypeScript 在編輯器裡就直接提醒你。
function add(a: number, b: number): number {
return a + b
}
add(1, 2) // OK,回傳 3
add(1, "2") // 編譯期就報錯:Argument of type 'string' is not assignable to parameter of type 'number'
: number 是型別註記;TypeScript 也會在很多情況下自動型別推論(inference),不用每個變數都手動標型別。這兩件事貫穿本站所有範例。
官方學習資源
官方文件與線上練習
typescriptlang.org 是權威來源。TypeScript for JavaScript Programmers 是官方給有 JS 經驗者的最短入門;Playground 可以在瀏覽器裡直接寫、直接看編譯出來的 JS。官方目前沒有自製的教學影片頻道,本站精選的影音多來自微軟官方頻道與作者本人的公開演講。
作者親自講解
TypeScript 由微軟傑出工程師 Anders Hejlsberg(同時也是 C# 與 Turbo Pascal 的設計者)主導開發。他在 TSConf 與微軟官方頻道上的公開演講,是了解「TypeScript 為什麼這樣設計」最直接的來源,已收錄在 影音教學。
先看這支總覽
Fireship 約兩分鐘,用最短路徑講型別註記、型別推論與 TypeScript 跟 JavaScript 的關係。適合建立心智模型,細節再對照本站各頁。