typescript
一種編程語言
TypeScript是一種由微軟開發的自由和開源的編程語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。安德斯·海爾斯伯格,C#的首席架構師,已工作於TypeScript的開發。2012年十月份,微軟發布了首個公開版本的TypeScript,2013年6月19日,在經歷了一個預覽版之後微軟正式發布了正式版TypeScript 0.9,向未來的TypeScript 1.0版邁進了很大一步。
TypeScript是一種由微軟開發的自由和開源的編程語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。安德斯·海爾斯伯格,C#的首席架構師,已工作於TypeScript的開發。
TypeScript擴展了JavaScript的語法,所以任何現有的JavaScript程序可以不加改變的在TypeScript下工作。TypeScript是為大型應用之開發而設計,而編譯時它產生 JavaScript 以確保兼容性。
TypeScript 支持為已存在的 JavaScript 庫添加類型信息的頭文件,擴展了它對於流行的庫如 jQuery,MongoDB,Node.js 和 D3.js 的好處。
TypeScript 起源於開發應用程序規模的 JavaScript 應用程序的需求。Microsoft的語言開發者們說內部以及外部的客戶都表示他們構建 JavaScript 代碼的問題。
很多最終依賴於 JavaScript 的開發者通常用編譯為 JavaScript 代碼的另一種語言寫腳本,例如 CoffeeScript 和 Script# (讀作 ScriptSharp)。一個明顯的劣勢是也許無法從那另一種語言使用任何 JavaScript 的具體的語言特性,如果那種語言不支持它的話。
在 Microsoft 內部,它導致了自定義工具以簡化 JavaScript 組件的編寫的需求。
TypeScript 是一種給 JavaScript 添加特性的語言擴展。
● 類型批註和編譯時類型檢查
●類
●介面
●模塊
●lambda 函數
語法上,TypeScript 很類似於 JScript .NET,另外一個添加了對靜態類型,經典的面向對象語言特性如類,繼承,介面和命名空間等的支持的 Microsoft 對 ECMA-262 語言標準的實現。
類型批註
TypeScript 通過類型批註提供靜態類型以在編譯時啟動類型檢查。這是可選的,而且可以被忽略而使用 JavaScript 常規的動態類型。
typescript
類型批註可以被導出到一個單獨的聲明文件以讓使用類型的已被編譯為 JavaScript 的 TypeScript 腳本的類型信息可用。批註可以為一個現有的JavaScript 庫聲明,就像已經為 Node.js 和 jQuery 所做的那樣。
當類型沒有給出時,TypeScript 編譯器利用類型推斷以推斷類型。如果由於缺乏聲明,沒有類型可以被推斷出,那麼它就會默認為是動態的 any 類型。
聲明文件
當一個 TypeScript 腳本被編譯時,有一個產生作為編譯后的 JavaScript 的組件的一個介面而起作用的聲明文件 (具有擴展名 .d.ts) 的選項。在這個過程中編譯器基本上帶走所有的函數和方法體而僅保留所導出類型的批註。當第三方開發者從 TypeScript 中使用它時,由此產生的聲明文件就可以被用於描述一個 JavaScript 庫或模塊導出的虛擬的 TypeScript 類型。
聲明文件的概念類似於 C/C++ 中頭文件的概念。
typescript
對 ECMAScript 6 的支持
TypeScript 增加了對為即將到來的 ECMAScript 6 標準所建議的特性的支持。
如下為其構想:
類 (以及繼承) 模塊Arrow functions
儘管標準還未準備就緒,Microsoft 說它的目標是使 TypeScript 的特性與建議的標準看齊。
類
TypeScript 支持集成了可選的類型批註支持的 ECMAScript6 的類。
typescript
這種語言的規範說明一個未來的版本將會支持基於類型擦除的泛型編程。
與 JavaScript 的兼容性
TypeScript 是 JavaScript 的一個超集。默認情況下編譯器以 ECMAScript 3 (ES3) 為目標但 ES5 也是受支持的一個選項。一個 TypeScript 應用可以利用已存在的 JavaScript 腳本。編譯后的 TypeScript 腳本也可以從 JavaScript 中使用。
現有框架如 jQuery 和Node.js 等受到完全支持。這些庫的類型聲明在源代碼中提供。
支持的瀏覽器和平台
運行於任何平台上的任何網頁瀏覽器都可以運行 TypeScript 由於它僅僅是被編譯為標準的 JavaScript。一個腳本既可以被預編譯為 JavaScript 也可以通過為 TypeScript 包含 JavaScript 編譯器實時編譯。
編譯器
TypeScript 編譯器,名稱叫 tsc, 是用可以被編譯為可以被執行在任何 JavaScript 引擎中,在任何宿主 - 如瀏覽器 - 中的常規 JavaScript 的 TypeScript 寫的。編譯器包被綁定於一個可以執行編譯器的腳本宿主。使用 Node.js 作為宿主的 Node.js 包同樣可以獲得。
也有用 JavaScript 寫的客戶端編譯器的一個 alpha 版本,它在頁面載入時,實時執行 JavaScript 代碼。
這種編譯器的當前版本默認支持 ECMAScript 3。一個選項是允許以 ECMAScript 5 為目標以利用該版本獨有的語言特性。類,儘管是 ECMAScript 6 標準的一部分,在這兩個模式下都可用。
IDE 和編輯器支持
Microsoft為Visual Studio 2012 和 WebMatrix 提供了一個插件,也為Sublime Text, Emacs 和Vim 提供了基本的文本編輯器支持。在線的 Cloud9 IDE也支持 TypeScript。JetBrains 也計劃在他們的 IDE 系列中支持 TypeScript, 而且已經發行了具有部分支持的 PhpStorm 6 和 WebStorm 6 預覽版本。
TypeScript 是開源的,其源代碼可以在 Apache 2 License 下從 CodePlex 獲得。這個項目由 Microsoft 維持,但是任何人可以通過經 CodePlex 項目頁發送反饋,建議和 bugfixes 而做出貢獻。
已有一些批評提到這一想法,即使 TypeScript 鼓勵強類型,當前也只有 Microsoft Visual Studio 允許為該語言容易的開發。最初的觀點是在其它的編輯器上帶來強類型,IntelliSense, 代碼完成和代碼重構可能不是一個簡單的任務。此外,允許為 TypeScript 開發的Visual Studio 擴展不是開源的。最好的 TypeScript 開發體驗是在 Microsoft Windows 上,然而隨著時間的流逝以及這種語言開放的本質,加之編譯器自我託管,而且用 TypeScript 自身寫的,這很有可能會改變。可以通過編譯器的源代碼訪問到 AST (抽象句法樹),也可以獲得詳細的語言規範文檔,社區已開始構建一個跨平台的編輯器,利用和 Visual Studio 所用相同的語言服務以提供一個增強的編輯體驗。編輯器仍然在概念檢驗的階段,但已經運行於 Linux, OSX 和 Windows,提供針對之前對提供此類服務的困難度的估計的 IntelliSense, 代碼完成和句法高亮。
2013年6月19日,在經歷了一個預覽版之後微軟正式發布了正式版TypeScript 0.9,向未來的TypeScript 1.0版邁進了很大一步。
TypeScript 0.9迎來了一些重大的新功能,除對語言本身特性進行了擴充之外,還更加完善地整合了Visual Studio,微軟開發部副總裁Soma Somasegar發布帖子稱,新版本的TypeScript在互動式性能方面有了顯著的提高和改善。
與JavaScript相比,TypeScript 進步的地方包括:加入註釋,讓編譯器理解所支持的對象和函數,編譯器會移除註釋,不會增加開銷;增加一個完整的類結構,使之更像是傳統的面向對象語言。