TypeScript

云云​(對話 | 貢獻)2026年6月23日 (二) 16:24的修訂

TypeScript 是微軟開發的一款開源編程語言,它是 JavaScript 的一個超集,在 JavaScript 的基礎上添加了可選的靜態類型和基於類的面向對象編程等特性。[1][2]TypeScript 代碼通過編譯器轉譯為 JavaScript 代碼,可運行在任何瀏覽器、任何作業系統以及任何支持 JavaScript 的宿主環境上。[1][3]該語言由 Anders Hejlsberg 主導設計,旨在幫助開發者更高效地構建和管理大規模 JavaScript 應用程式。[3]

歷史

TypeScript 由微軟公司開發,於2012年10月首次公開發布。[1]它的誕生源於使用 JavaScript 開發大型項目時所面臨的挑戰——隨着項目規模的增長,JavaScript 動態類型特性導致的類型相關錯誤越來越難以在開發階段被及時發現。[1][4]TypeScript 通過引入靜態類型系統,使得開發工具(如 IDE)能夠在代碼運行前就捕獲潛在的類型錯誤,從而提升了大型應用的開發效率和代碼質量。[4]

2025年3月,微軟宣布將大幅提升 TypeScript 編譯器的性能。[1]2026年3月23日,微軟發布了 TypeScript 6.0,這是基於原有 JavaScript 代碼庫的最後一個版本,作為一個過渡版本,旨在為向 7.0 版本遷移做準備。[1]同日,微軟宣布未來的 TypeScript 7.0 將使用 Go 語言重寫底層編譯器,預計編譯速度將比 TypeScript 6.0 快約 10 倍。[1]2026年4月,微軟發布了 TypeScript 7.0 的 Beta 版本。[1]

設計目標

TypeScript 的核心設計目標是成為 JavaScript 程序的靜態類型檢查器——即在代碼運行之前運行的工具,用於確保程序中的類型是正確的。[4]它在不改變 JavaScript 運行時行為的前提下,提供了一套類型系統,使開發者能夠更早地發現和修復錯誤。[2]

具體而言,TypeScript 的設計遵循以下原則:

  • **JavaScript 的超集**:所有合法的 JavaScript 代碼在語法上都是合法的 TypeScript 代碼,TypeScript 與 JavaScript 的運行時行為完全相同。[2]
  • **可選的靜態類型**:開發者可以自由選擇是否添加類型註解,類型系統是漸進式的。[3]
  • **類型推斷**:TypeScript 能夠自動推斷許多類型,減少了顯式類型註解的需求。[2]
  • **編譯時類型檢查**:類型檢查發生在編譯階段,編譯後生成的 JavaScript 代碼中不包含類型信息。[2]

主要特性

類型系統

TypeScript 的類型系統是其最核心的特性。它支持多種類型,包括基本類型(如 `string`、`number`、`boolean`)、數組、元組、枚舉、`any`、`void`、`never` 等。[2]TypeScript 採用結構類型系統(也稱為「鴨子類型」),即類型的兼容性取決於其成員結構而非顯式聲明。[4]

類型推斷

TypeScript 可以在許多情況下自動推斷變量的類型,無需開發者顯式註解。例如,當創建一個變量並賦予一個特定值時,TypeScript 會將該值作為其類型。[2][5]

接口與泛型

TypeScript 支持接口(Interface),用於定義對象的結構,以及泛型(Generics),用於創建可重用的、類型安全的組件。[4]

聲明文件

TypeScript 支持為已存在的 JavaScript 庫編寫聲明文件(以 `.d.ts` 為擴展名),從而為這些庫提供類型信息,使其能夠在 TypeScript 項目中被類型安全地使用。[1]

對現代 ECMAScript 特性的支持

TypeScript 支持許多 ECMAScript 新特性,並允許開發者將代碼編譯為不同版本的 JavaScript(如 ES5、ES6 等),以兼容不同的運行環境。[1]

開發工具與生態系統

TypeScript 編譯器(`tsc`)是官方的參考實現,可通過 npm 安裝使用。[3]主流的代碼編輯器(如 Visual Studio Code、WebStorm 等)和構建工具(如 Webpack、Rollup 等)都對 TypeScript 提供了良好的支持。[4]

TypeScript 擁有活躍的開源社區,其原始碼託管在 GitHub 上。[3]微軟為 TypeScript 項目採用了開源行為準則。[3]

參考文獻

  1. ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 引用錯誤:無效的 <ref> 標籤,未定義名稱為 baidu 的參考文獻內容文字。
  2. ↑ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 TypeScript – MDN Web Docs
  3. ↑ 3.0 3.1 3.2 3.3 3.4 3.5 TypeScript 官方網站
  4. ↑ 4.0 4.1 4.2 4.3 4.4 4.5 The TypeScript Handbook
  5. ↑ TypeScript for JavaScript Programmers