TypeScript
| 本條目可透過翻譯en:TypeScript來擴充。
請在翻譯前點擊右邊的「顯示▼」了解重要說明。
|
TypeScript的logo
|
|
| 面市時間 | 2012 |
|---|---|
| 設計者 | Microsoft |
| 實作者 | Microsoft |
| 啟發語言 | JavaScript, Java, C# |
| 許可證 | Apache License |
| 常用副檔名 | .ts |
| 網站 | http://www.typescriptlang.org/ |
TypeScript是一種由微軟開發的自由和開源的程式語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態型別和基於類的物件導向編程。安德斯·海爾斯伯格,C#的首席架構師,已工作於TypeScript的開發。[1]
TypeScript擴充功能了JavaScript的句法,所以任何現有的JavaScript程式可以不加改變的在TypeScript下工作。TypeScript是為大型應用之開發而設計,而編譯時它產生JavaScript以確保相容性。[2]
TypeScript支援為已存在的JavaScript庫添加類型資訊的表頭檔,擴充功能了它對於流行的庫如jQuery,MongoDB,Node.js和D3.js的好處。
目錄
背景[編輯]
TypeScript起源於開發應用程式規模的JavaScript應用程式的需求。Microsoft的語言開發者們說內部以及外部的客戶都表示他們構建JavaScript代碼的問題。
很多最終依賴於JavaScript的開發者通常用編譯為JavaScript代碼的另一種語言寫指令碼,例如CoffeeScript和Script#(讀作ScriptSharp)。一個明顯的劣勢是也許無法從那另一種語言使用任何JavaScript的具體的語言特性,如果那種語言不支援它的話。
在Microsoft內部,它導致了自訂工具以簡化JavaScript元件的編寫的需求。
語言特性[編輯]
TypeScript是一種給JavaScript添加特性的語言擴充功能。
語法上,TypeScript很類似於JScript .NET,另外一個添加了對靜態型別,經典的物件導向語言特性如類,繼承,介面和命名空間等的支援的Microsoft對ECMA-262語言標準的實作。
類型批註[編輯]
TypeScript通過類型批註提供靜態型別以在編譯時啟動型別檢查。這是可選的,而且可以被忽略而使用JavaScript常規的動態型別。
function Add(left: number, right: number): number { return left + right; }
對於基本類型的批註是number, bool和string。而弱或動態型別的結構則是any類型。
類型批註可以被匯出到一個單獨的宣告檔案以讓使用類型的已被編譯為JavaScript的TypeScript指令碼的類型資訊可用。批註可以為一個現有的JavaScript庫宣告,就像已經為Node.js和jQuery所做的那樣。
當類型沒有給出時,TypeScript編譯器利用類型推斷以推斷類型。如果由於缺乏宣告,沒有類型可以被推斷出,那麼它就會預設為是動態的any類型。
宣告檔案[編輯]
當一個TypeScript指令碼被編譯時,有一個產生作為編譯後的JavaScript的元件的一個介面而起作用的宣告檔案(具有副檔名.d.ts)的選項。在這個過程中編譯器基本上帶走所有的函式和方法體而僅保留所匯出類型的批註。當第三方開發者從TypeScript中使用它時,由此產生的宣告檔案就可以被用於描述一個JavaScript庫或模組匯出的虛擬的TypeScript類型。
module Arithmetics { add(left: number, right: number): number; subtract(left: number, right: number): number; multiply(left: number, right: number): number; divide(left: number, right: number): number; }
類型宣告檔案可以為已存在的JavaScript庫手寫,就像為jQuery和Node.js所做的那樣。
對ECMAScript 6的支援[編輯]
TypeScript增加了對為即將到來的ECMAScript 6標準所建議的特性的支援。
如下為其構想:
- 類(以及繼承)
- 模組
- Arrow functions
儘管標準還未準備就緒,Microsoft說它的目標是使TypeScript的特性與建議的標準看齊。
類[編輯]
TypeScript支援整合了可選的類型批註支援的ECMAScript 6的類。
class Person { private name: string; private age: number; constructor(name: string, age: number){ this.name = name; this.age = age; } toString(): string { return this.name + "(" + this.age + ")"; } }
泛型[編輯]
這種語言的規範說明一個未來的版本將會支援基於類型擦除的泛型編程。
與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代碼。[4]
這種編譯器的目前版本預設支援ECMAScript 3。一個選項是允許以ECMAScript 5為目標以利用該版本獨有的語言特性。類,儘管是ECMAScript 6標準的一部分,在這兩個模式下都可用。
IDE和編輯器支援[編輯]
Microsoft為Visual Studio 2012和WebMatrix提供了一個外掛模組,也為Sublime Text, Emacs和Vim提供了基本的文字編輯器支援。[5]線上的Cloud9 IDE也支援TypeScript。JetBrains也計劃在他們的IDE系列中支援TypeScript,而且已經發行了具有部分支援的PhpStorm 6和WebStorm 6預覽版本。[6]
開源[編輯]
TypeScript是開源的,其原始碼可以在Apache 2 License下從CodePlex獲得。這個專案由Microsoft維持,但是任何人可以通過經CodePlex計畫頁傳送反饋,建議和bugfixes而做出貢獻。[7]
已有一些批評提到這一想法,即使TypeScript鼓勵強型別,當前也只有Microsoft Visual Studio允許為該語言容易的開發。最初的觀點是在其它的編輯器上帶來強型別,IntelliSense, 代碼完成和代碼重構可能不是一個簡單的任務。[8]此外,允許為TypeScript開發的Visual Studio擴充功能不是開源的。最好的TypeScript開發體驗是在Microsoft Windows上,[9]然而隨著時間的流逝以及這種語言開放的本質,加之編譯器自我託管,而且用TypeScript自身寫的,這很有可能會改變。可以通過編譯器的原始碼存取到AST(抽象句法樹),也可以獲得詳細的語言規範文件,社群已開始構建一個跨平台的編輯器,[10][11]利用和Visual Studio所用相同的語言服務以提供一個增強的編輯體驗。編輯器仍然在概念檢驗的階段,但已經執行於Linux, OSX和Windows,提供針對之前對提供此類服務的困難度的估計的IntelliSense,代碼完成和句法高亮。
參見[編輯]
其它編譯為JavaScript的語言[編輯]
更多:list of languages that compile to JS
參考資料[編輯]
- ^ Microsoft takes the wraps off TypeScript, a superset of JavaScript | ZDNet
- ^ Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem? | Ars Technica
- ^ http://techcrunch.com/2012/10/01/microsoft-previews-new-javascript-like-programming-language-typescript/
- ^ TypeScript Compile
- ^ Olivier Bloch. Sublime Text, Vi, Emacs: TypeScript enabled!. Microsoft. 2012-10-01 [2012-10-28].
- ^ PhpStorm & WebStorm 6.0 Early Access Program started. JetBrains.
- ^ http://typescript.codeplex.com/
- ^ Miguel de Icaza. TypeScript: First Impressions. 2012-10-01 [2012-10-12]. "But TypeScript only delivers half of the value in using a strongly typed language to Unix developers: strong typing. Intellisense, code completion and refactoring are tools that are only available to Visual Studio Professional users on Windows. There is no Eclipse, MonoDevelop or Emacs support for any of the language features"
- ^ Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript?. ZDNet. 2012-10-01 [2012-10-12]. "And I think this is a pretty big misstep. If you're building web apps that run on anything other than Windows, you're likely using a Mac and most likely not using Visual Studio. You need the Visual Studio plug-in to get the IntelliSense. All you get without Visual Studio is the strong-typing. You don't get the productivity benefits you get from IntelliSense.."
- ^ Code Assistant for TypeScript.
- ^ TypeScript Editor. 2012-11-21.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||