-
typescript
鎖定
TypeScript是微軟開發的一個開源的編程語言,通過在JavaScript的基礎上添加靜態類型定義構建而成。TypeScript通過TypeScript編譯器或Babel轉譯為JavaScript代碼,可運行在任何瀏覽器,任何操作系統。
[1]
TypeScript添加了很多尚未正式發佈的ECMAScript新特性(如裝飾器
[2]
)。2012年10月,微軟發佈了首個公開版本的TypeScript,2013年6月19日,在經歷了一個預覽版之後微軟正式發佈了正式版TypeScript。當前最新正式版本為TypeScript 5.2, 2023年8月發佈。
[3]
[18]
typescript產生背景
TypeScript 起源於使用JavaScript開發的大型項目 。由於JavaScript語言本身的侷限性,難以勝任大型項目的開發和維護。因此微軟開發了TypeScript ,使得其能夠勝任大型項目的開發。
typescript主要功能
TypeScript的作者是安德斯·海爾斯伯格,C#的首席架構師。
[4]
它是開源和跨平台的編程語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。
[4-7]
TypeScript擴展了JavaScript的語法,所以任何現有的JavaScript程序可以運行在TypeScript環境中。TypeScript是為大型應用的開發而設計,並且可以編譯為JavaScript。
[8]
TypeScript 支持為已存在的 JavaScript 庫添加類型信息的頭文件,擴展了它對於流行庫的支持,如 jQuery,MongoDB,Node.js 和 D3.js 等。這些第三方庫的類型定義本身也是開源的,所有開發者都能參與貢獻。
[9]
typescript主要特性
TypeScript 是一種給 JavaScript 添加特性的語言擴展。
●類
●接口
語法上,TypeScript 很類似於 JScript .NET,另外一個添加了對靜態類型,經典的面嚮對象語言特性如類,繼承,接口和命名空間等的支持的 Microsoft 對 ECMAScript 語言標準的實現。
typescript類型批註
TypeScript 通過類型批註提供靜態類型以在編譯時啓動類型檢查。這是可選的,而且可以被忽略而使用 JavaScript 常規的動態類型。
對於基本類型的批註是 number, bool 和 string。而弱或動態類型的結構則是 any 類型。
類型批註可以被導出到一個單獨的聲明文件以讓使用類型的已被編譯為 JavaScript 的 TypeScript 腳本的類型信息可用。批註可以為一個現有的 JavaScript 庫聲明,就像已經為 Node.js 和 jQuery 所做的那樣。
當類型沒有給出時,TypeScript 編譯器利用類型推斷以推斷類型。如果由於缺乏聲明,沒有類型可以被推斷出,那麼它就會默認為是動態的 any 類型。
typescript聲明文件
當一個 TypeScript 腳本被編譯時,有一個產生作為編譯後的 JavaScript 的組件的一個接口而起作用的聲明文件 (具有擴展名 .d.ts) 的選項。在這個過程中編譯器基本上帶走所有的函數和方法體而僅保留所導出類型的批註。當第三方開發者從 TypeScript 中使用它時,由此產生的聲明文件就可以被用於描述一個 JavaScript 庫或模塊導出的虛擬的 TypeScript 類型。
聲明文件的概念類似於 C/C++ 中頭文件的概念。
類型聲明文件可以為已存在的 JavaScript 庫手寫,就像為 jQuery 和 Node.js 所做的那樣。
對 ECMAScript 6 的支持
TypeScript 增加了對為即將到來的 ECMAScript 6 標準所建議的特性的支持。
如下為其構想:
類 (以及繼承) 模塊Arrow functions
儘管標準還未準備就緒,Microsoft 説它的目標是使 TypeScript 的特性與建議的標準看齊。
類
TypeScript 支持集成了可選的類型批註支持的 ECMAScript6 的類。
typescript泛型
typescript兼容性
TypeScript 是 JavaScript 的一個超集。默認情況下編譯器以 ECMAScript 3 (ES3) 為目標但 ES5 也是受支持的一個選項。一個 TypeScript 應用可以利用已存在的 JavaScript 腳本。編譯後的 TypeScript 腳本也可以在JavaScript 中使用。
現有框架如 jQuery 和 Node.js 等受到完全支持。這些庫的類型聲明在源代碼中提供。
支持的瀏覽器和平台運行於任何平台上的任何網頁瀏覽器都可以運行 TypeScript 由於它僅僅是被編譯為標準的 JavaScript。一個腳本既可以被預編譯為 JavaScript 也可以通過為 TypeScript 包含 JavaScript 編譯器實時編譯。
typescript開發工具
TypeScript 編譯器,名稱叫 tsc, 是用可以被編譯為可以被執行在任何 JavaScript 引擎中,在任何宿主 - 如瀏覽器 - 中的常規 JavaScript 的 TypeScript 寫的。編譯器包被綁定於一個可以執行編譯器的腳本宿主。使用 Node.js 作為宿主的 Node.js 包同樣可以獲得。
這種編譯器的當前版本默認支持 ECMAScript 3。一個選項是允許以 ECMAScript 5 為目標以利用該版本獨有的語言特性。類,儘管是 ECMAScript 6 標準的一部分,在這兩個模式下都可用。
IDE 和編輯器支持
微軟官方推薦的編輯器有:
typescript開源
TypeScript 是開源的,其源代碼可以在 Apache 2 License 下從 CodePlex 獲得。這個項目由 Microsoft 維持,但是任何人可以通過經 CodePlex 項目頁發送反饋,建議和 bugfixes 而做出貢獻。
[13]
已有一些批評提到這一想法,即使 TypeScript 鼓勵強類型,當前也只有 Microsoft Visual Studio 允許為該語言容易的開發。最初的觀點是在其它的編輯器上帶來強類型,IntelliSense, 代碼完成和代碼重構可能不是一個簡單的任務。
[14]
此外,允許為 TypeScript 開發的 Visual Studio 擴展不是開源的。最好的 TypeScript 開發體驗是在 Microsoft Windows 上,
[15]
然而隨着時間的流逝以及這種語言開放的本質,加之編譯器自我託管,而且用 TypeScript 自身寫的,這很有可能會改變。可以通過編譯器的源代碼訪問到 AST (抽象句法樹),也可以獲得詳細的語言規範文檔,社區已開始構建一個跨平台的編輯器,
[16-17]
利用和 Visual Studio 所用相同的語言服務以提供一個增強的編輯體驗。編輯器仍然在概念檢驗的階段,但已經運行於 Linux, OSX 和 Windows,提供針對之前對提供此類服務的困難度的估計的 IntelliSense, 代碼完成和句法高亮
- 參考資料
-
- 1. 什麼是TypeScript .TypeScript官方.2020-01-05[引用日期2021-01-17]
- 2. githubECMAScript裝飾器提案 .github[引用日期2020-02-23]
- 3. TypeScript .TypeScript官網[引用日期2023-09-23]
- 4. Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript? .ZDNet[引用日期2013-02-14]
- 5. Microsoft takes the wraps off TypeScript, a superset of JavaScript .ZDNet[引用日期2013-02-14]
- 6. TypeScript: JavaScript Development at Application Scale .MSDN[引用日期2013-02-14]
- 7. Microsoft Augments Javascript for Large-scale Development .CIO[引用日期2013-02-14]
- 8. Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem? .ars technica[引用日期2013-02-14]
- 9. DefinitelyTyped - 我該如何貢獻? .Github.2020-09-26[引用日期2020-10-18]
- 10. Microsoft Previews New JavaScript-Like Programming Language TypeScript .AOL Tech[引用日期2013-02-14]
- 11. TypeScript裝飾器 .TypeScript中文網.2020-02-23[引用日期2020-02-23]
- 12. TypeScript Compile .github[引用日期2013-02-14]
- 13. TypeScript .微軟[引用日期2013-02-14]
- 14. TypeScript: First Impressions .tirania[引用日期2013-02-14]
- 15. Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript? . ZDNet[引用日期2013-02-14]
- 16. CATS .github[引用日期2013-02-14]
- 17. TypeScript Editor .微軟[引用日期2013-02-14]
- 18. TypeScript .微軟.2020-01-05[引用日期2023-01-08]
- 收起