TypeScript 是 JavaScript 的強類型版本钝鸽。然后在編譯期去掉類型和特有語法笔呀,生成純粹的 JavaScript 代碼灵巧。由于最終在瀏覽器中運行的仍然是 JavaScript,所以 TypeScript 并不依賴于瀏覽器的支持官觅,也并不會帶來兼容性問題。
TypeScript 是 JavaScript 的超集阐污,這意味著他支持所有的 JavaScript 語法休涤。并在此之上對 JavaScript 添加了一些擴展,如 class / interface / module 等笛辟。這樣會大大提升代碼的可閱讀性功氨。
強類型語言的優(yōu)勢在于靜態(tài)類型檢查,具體可以參見 flow.js/typescript 這類定義參數類型的意義何在手幢? - vilicvane 的回答疑故。概括來說主要包括以下幾點:
1. 靜態(tài)類型檢查
2. IDE 智能提示
3. 代碼重構
4. 可讀性
TypeScript 雖然是強類型語言,但是如果對象被聲明為了 any 類型弯菊,就會忽略所有的類型檢查纵势。這種靈活的結構保證了他可以在保證整體有強類型檢查優(yōu)勢的同時,在一些細節(jié)問題上保持弱類型的靈活管钳。
TypeScript 本身是開源的钦铁,這意味著開發(fā)者可以自由修改其源代碼,同時 TypeScript 的架構設計也很優(yōu)秀才漆,提供了充分的 API 接口方便開發(fā)者進行進一步擴展牛曹。順便說一下,TypeScript 編譯器本身是用 TypeScript 開發(fā)的醇滥。構建流程是先用舊版本的 TypeScirptCompiler.js 將新版本的 TypeScript Language 的 TypeScript源代碼編譯成新的 TypeScriptCompiler.js黎比,聽起來很厲害的樣子。
由于其開源性鸳玩,通過 TypeScript Compiler API阅虫,開發(fā)者可以自己實現編譯器(比如添加增量編譯和自動編譯,大幅提升編譯速度)不跟,自定義語法檢查颓帝,以及自定義輸出結構等。 由于編譯器核心靈活的結構窝革,開發(fā)者只需要簡單的添加一些代碼购城,就可以在 IDE 中支持 TypeScript 的諸多特性。
順便打個廣告虐译,白鷺引擎是基于 TypeScript 的開源 HTML5 游戲引擎瘪板。白鷺引擎的后續(xù)版本會利用這些特性不斷完善引擎自身。舉例漆诽,我們的 IDE Egret Wing 就利用了 TypeScript Service API 實現了了代碼智能提示等功能侮攀。文檔生成工具也是通過擴展 TypeScript Compiler API 實現的史侣。
總結:
我認為 TypeScript 是一項非常值得學習的新技術,由于他是 JavaScript 的超集魏身,對 JavaScript 開發(fā)者來說入門門檻很低(相對于 Dart / CoffeeScript 等其他 JavaScript 變種來說 )惊橱。
如果一定要找出幾個不用 TypeScript的原因。我能想到以下情況:
1.需要在 HTML 里大量嵌入 JavaScript 代碼箭昵,而非 HTML 和 JavaScript 分離税朴。
2.熟練運用原型繼承,不喜歡 class 關鍵字
3.項目中大量依賴了第三方 JavaScript 類庫家制,并且這些類庫沒有 .d.ts 文件
4“微軟雅黑”