〔译〕TypeScript 2.0 正式发布
譯者注:可能大家更關心的是 〔譯〕TypeScript 2.0 的新特性
[原文]
TypeScript 2.0 is now available!
September 22, 2016 by Daniel Rosenwasser
今天非常高興的通知大家,TypeScript 2.0 正式版發布了!
TypeScript 2.0 對于產品團隊來說是個偉大的歷程,這個歷程少不了來自社區和合作伙伴的貢獻。這個版本帶來了一些新的特性,可以提高開發人員的開發效率。這個版本使 TypeScript 更加接近 ECMAScript 的發展,為 JavaScript 庫和工具提供了更為廣泛的支持。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。
要使用 TypeScript 2.0,可以下載 TypeScript 2.0 for Visual Studio 2015 (需要更新到 Update3),或者從 NuGet 獲取,或者在 Visual Studio Code 中使用 TypeScript 2.0,或者通過 NPM 安裝:
npm install -g typescript@2.0要在 Visual Studio "15" 預覽版使用 TypeScript 2.0 需要等到下一個預覽版發布。
2.0 歷程
幾年前我就們踏上了 2.0 版本的歷程。TypeScript 1.0 成功地向開發人員展示了 JavaScript 與靜態類型結合和潛能。編譯器的錯誤檢查節約了大量用于查找 BUG 的時間。在開發者們開始創建越來越大的 JavaScript 應用時,TypeScript 的編輯器類工具帶來了巨大的開發效率提升。然而 JavaScript 是世界上最流行最廣泛使用的語言,作為它的超集,TypeScript 還有很長的路要走。
TypeScript 1.1 完全重寫了編譯器,這帶來4倍效率提升。新的編譯器核心更加靈活,更快速地迭代,這為以后的版本打下了基礎。幾乎同時,TypeScript 代碼庫遷移到 GitHub,這個鼓勵社區參與并提供了更好協作平臺地方。
TS 1.4 和 1.5 主要致力于支持 ES2015/ES6,以期與 JavaScript 語言的發展同步。TypeScript 1.5 還引入了對模塊和修飾符〔譯者注:類似 Java 中的"注解(Annotation)”,C# 中的“特性(Attribute)”〕,允許 Angular 2 采用 TypeScript,并與我們的合作一起改進 TypeScript。
TypeScript 1.6-1.8(1.6, 1.7, 1.8) 對類型系統進行了重大改進,每一個版本的發布都讓 JavaScript 模式更加清晰,同時也為主要的 JavaScript 庫提供支持。這些發布版本同樣圍繞著對 ES* 的支持,并在快速(譯者注:原文 out-of-the-box 是開箱即用的意思,引申為快速)檢查錯誤方面提升了編譯器,使之先進不少。
今天,TypeScript 語言 2.0 發布讓我們激動不已。在這個版本的 TypeScript 更加接近 ECMAScript 規范,更廣泛地支持 JavaScript 庫和工具,以及非常棒的語言服務用以向所有主要編輯器提供最佳的編輯體驗。所以有些合在一起,就能提供最更高效,更靈活的 JavaScript 開發體驗。
TypeScript 社區
從 1.0 開始,TypeScript 就不只是一門語言,它也成長成一個社區。僅上個月,TypeScript 在 NPM 上就有 200 萬的下載量,而去年同期只有 27.5 萬。此外,我們的每日構建版本吸引了超過 2000 用戶在 GibHub 上參與討論,以及 1500 用戶提交問題。我們也接受了來自 150 余位用戶的 PR〔譯者注:Pull Request〕,范圍包括修復BUG、原型和主要特性等。
DefinitelyTyped 是我們的社區發展越來越好的另一個例子。它從一個關于申明文件(用 TypeScript 描述你的 JS 庫接口的文件)的小代碼庫開始,現在已經包含超過 2000 個庫的申明,這些申明是 2500 多個人捐獻的手工代碼。它是目前我們所知道的最大的正規申明。通過建立 DefinitelyTyped,TypeScript 社區變得不僅僅支持使用已經存在的 JavaScript 庫,還更好的定義了我們所有 JavaScript 代碼的理解。
TypeScript 社區和更大的 JavaScript 社區為 TypeScript 迄今為止取得的成功發揮了重要作用。無論你捐獻代碼、宣傳、測試、提交問題,還是在項目中使用 TypeScript,我們都對你的長期支持表示感謝!
TypeScript 2.0 有什么新鮮玩意兒?
TypeScript 2.0 帶來了一些 1.8 所不具有的新特性,其中一些我們已經在 2.0 Beta 版和候選版的博客中詳細說明了。下面會介紹一些現在剛具備的重要特性。你可以在我們的 WIKI 上閱讀推斷類型、never 類型、用于函數的 this 類型、tsconfig 對 glob 的支持 等。
獲取簡易申明文件 (.d.ts)
typings 和 tsd 已經成為TypeScript 生態系統中極好的工具。直到現在,這些包管理工具幫助用戶快速地從 DefinitelyTyped 取得 .d.ts 文件,用于他們的項目。雖然有這些工具,對新用戶來說,學習如何通過這些包管理工具獲得和管理申明文件的依賴關系仍然是件痛苦的事情。
在 2.0 中獲取和使用申明文件會更容易,比如想獲取 lodash 的申明文件,只需要使用 NPM:
npm install -s @types/lodash上面的命名安裝了一個范圍包 @type/lodash,這使得 TypeScript 2.0 能在程序中導入(import) lodash 時自動引用 lodash 的申明。這就是說你不需要其它工具,你的 .d.ts 文件就能找到 package.json 中剩下的依賴。
值得注意的是,typeing 和 tsd 能在已經存在的項目里繼續使用,然而兼容 2.0 的申明文件不再會再通過這些工具生效。因此,我們強烈推薦使用 TypeScript 2.0 及以后版本的 NPM 流程。
非常感謝 Blake Embrey 在 typings 的工作,是他的工作推進了這項解決方案。
非空類型
JavaScript 有兩個值用于表示“空”——null 和 undefined。如果 null 是一個價值十億美元的錯誤,undefined 會給我們帶來加倍的損失。在 JavaScript 的世界,這兩個值是巨大的錯誤來源,因為用戶經常會忘記分辨 API 中返回的 null 或 undefined 值。
TypeScript 最初的想法是所有類型都是可空的。這就是說,某個數值類型也可能出現 null 或 undefined 值。很不幸,這并不能很好的解決 null/undefined 的問題。
在 TypeScript 2.0 中,null and undefined 擁有它們自己的類型,這讓開發者可以明確的表達是否允許 null/undefined?,F在如果某個東西可以是數值或者 null 值,你可以使用聯合類型 number | null(讀作“number 或 null”)。
因為這是一個破壞性的改變,我們選項里添加了 --strictNullChecks 模式來允許這種行為。然后在往后的發展中,打開這個選項會成為一個一般的最佳實踐,這有肋于捕捉大范圍的 null/undeined 錯誤。如果想關于非空類型的信息,請移步 GitHub 上的 Pull Request。
這里有一個關于非空類型的視頻
控制流程分析的類型
從 1.8 開始,TypeScript 就已經存在控制流分析,但是從 2.0 開始我們擴展了分析范圍,以對于在任何地方都能分析出可能的類型?,F在,配合非空類型,TypeScript 能做更多復雜的檢查,比如明確的賦值分析。
function f(condition: boolean) {let result: number;if (condition) {result = computeImportantStuff();}// 哇哦! 'result' 可能從未初始化!return result; }非常感謝 Ivo Gabe de Wolff 對這個特性初期的貢獻以及后來提供的大量反饋。你可以在 PR 中信息。
readonly 修飾詞
TypeScript 中的不可變編程變得容易了。從 TypeScript 2.0 開始,你可以定義屬性為只讀。
class Person {readonly name: string;constructor(name: string) {if (name.length < 1) {throw new Error("Empty name!");}this.name = name;} }// 錯誤!'name' 是只讀的。 new Person("Daniel").name = "Dan";所有沒有匹配設置器的獲取器都被認為是只讀的。
展望
TypeScript 從 JavaScript 而來。正如現在成千上成的 JavaScript 開發者所知道的那樣,TypeScript 開始于 JavaScript 相同的語法和語義,允許開發者使用已經存在的 JavaScript 代碼,使用流行的 JavaScript 庫,也可以從 JavaScript 中調用 TypeScript 代碼。JavaScript 可選的靜態類型使 JavaScript 開發者在開發 JavaScript 應用時,可以使用高效的開發工工具和實踐,比如靜態檢查,反射等。
我們會聯合合作伙伴和社區的力量繼續發展 JavaScript 的類型系統,讓用戶可以更深層次的將靜態類型方法用于 JavaScript。同時,我們會致力于提高 TypeScript 語言服務和一系列的工具特性,使開發工具變得更智能,以提高開發者的工作效率。
向所有一路走來到 2.0 的人致謝!你們的反饋和熱情帶來了 TypeScript 及其生態如今的成就。希望你們對 2.0 的興奮程度不亞于我們。
如果你還未使用 TypeScript,一定試試!我們非常愿意聽到你的聲音。
祝愉快
TypeScript 團隊
總結
以上是生活随笔為你收集整理的〔译〕TypeScript 2.0 正式发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat启动脚本startup.sh
- 下一篇: Task Runner Explorer