日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

〔译〕TypeScript 2.0 正式发布

發(fā)布時(shí)間:2025/3/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 〔译〕TypeScript 2.0 正式发布 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

譯者注:可能大家更關(guān)心的是 〔譯〕TypeScript 2.0 的新特性


[原文]
TypeScript 2.0 is now available!
September 22, 2016 by Daniel Rosenwasser

今天非常高興的通知大家,TypeScript 2.0 正式版發(fā)布了!

TypeScript 2.0 對(duì)于產(chǎn)品團(tuán)隊(duì)來說是個(gè)偉大的歷程,這個(gè)歷程少不了來自社區(qū)和合作伙伴的貢獻(xiàn)。這個(gè)版本帶來了一些新的特性,可以提高開發(fā)人員的開發(fā)效率。這個(gè)版本使 TypeScript 更加接近 ECMAScript 的發(fā)展,為 JavaScript 庫(kù)和工具提供了更為廣泛的支持。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。

要使用 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" 預(yù)覽版使用 TypeScript 2.0 需要等到下一個(gè)預(yù)覽版發(fā)布。

2.0 歷程

幾年前我就們踏上了 2.0 版本的歷程。TypeScript 1.0 成功地向開發(fā)人員展示了 JavaScript 與靜態(tài)類型結(jié)合和潛能。編譯器的錯(cuò)誤檢查節(jié)約了大量用于查找 BUG 的時(shí)間。在開發(fā)者們開始創(chuàng)建越來越大的 JavaScript 應(yīng)用時(shí),TypeScript 的編輯器類工具帶來了巨大的開發(fā)效率提升。然而 JavaScript 是世界上最流行最廣泛使用的語言,作為它的超集,TypeScript 還有很長(zhǎng)的路要走。

TypeScript 1.1 完全重寫了編譯器,這帶來4倍效率提升。新的編譯器核心更加靈活,更快速地迭代,這為以后的版本打下了基礎(chǔ)。幾乎同時(shí),TypeScript 代碼庫(kù)遷移到 GitHub,這個(gè)鼓勵(lì)社區(qū)參與并提供了更好協(xié)作平臺(tái)地方。

TS 1.4 和 1.5 主要致力于支持 ES2015/ES6,以期與 JavaScript 語言的發(fā)展同步。TypeScript 1.5 還引入了對(duì)模塊和修飾符〔譯者注:類似 Java 中的"注解(Annotation)”,C# 中的“特性(Attribute)”〕,允許 Angular 2 采用 TypeScript,并與我們的合作一起改進(jìn) TypeScript。

TypeScript 1.6-1.8(1.6, 1.7, 1.8) 對(duì)類型系統(tǒng)進(jìn)行了重大改進(jìn),每一個(gè)版本的發(fā)布都讓 JavaScript 模式更加清晰,同時(shí)也為主要的 JavaScript 庫(kù)提供支持。這些發(fā)布版本同樣圍繞著對(duì) ES* 的支持,并在快速(譯者注:原文 out-of-the-box 是開箱即用的意思,引申為快速)檢查錯(cuò)誤方面提升了編譯器,使之先進(jìn)不少。

今天,TypeScript 語言 2.0 發(fā)布讓我們激動(dòng)不已。在這個(gè)版本的 TypeScript 更加接近 ECMAScript 規(guī)范,更廣泛地支持 JavaScript 庫(kù)和工具,以及非常棒的語言服務(wù)用以向所有主要編輯器提供最佳的編輯體驗(yàn)。所以有些合在一起,就能提供最更高效,更靈活的 JavaScript 開發(fā)體驗(yàn)。

TypeScript 社區(qū)

從 1.0 開始,TypeScript 就不只是一門語言,它也成長(zhǎng)成一個(gè)社區(qū)。僅上個(gè)月,TypeScript 在 NPM 上就有 200 萬的下載量,而去年同期只有 27.5 萬。此外,我們的每日構(gòu)建版本吸引了超過 2000 用戶在 GibHub 上參與討論,以及 1500 用戶提交問題。我們也接受了來自 150 余位用戶的 PR〔譯者注:Pull Request〕,范圍包括修復(fù)BUG、原型和主要特性等。

DefinitelyTyped 是我們的社區(qū)發(fā)展越來越好的另一個(gè)例子。它從一個(gè)關(guān)于申明文件(用 TypeScript 描述你的 JS 庫(kù)接口的文件)的小代碼庫(kù)開始,現(xiàn)在已經(jīng)包含超過 2000 個(gè)庫(kù)的申明,這些申明是 2500 多個(gè)人捐獻(xiàn)的手工代碼。它是目前我們所知道的最大的正規(guī)申明。通過建立 DefinitelyTyped,TypeScript 社區(qū)變得不僅僅支持使用已經(jīng)存在的 JavaScript 庫(kù),還更好的定義了我們所有 JavaScript 代碼的理解。

TypeScript 社區(qū)和更大的 JavaScript 社區(qū)為 TypeScript 迄今為止取得的成功發(fā)揮了重要作用。無論你捐獻(xiàn)代碼、宣傳、測(cè)試、提交問題,還是在項(xiàng)目中使用 TypeScript,我們都對(duì)你的長(zhǎng)期支持表示感謝!

TypeScript 2.0 有什么新鮮玩意兒?

TypeScript 2.0 帶來了一些 1.8 所不具有的新特性,其中一些我們已經(jīng)在 2.0 Beta 版和候選版的博客中詳細(xì)說明了。下面會(huì)介紹一些現(xiàn)在剛具備的重要特性。你可以在我們的 WIKI 上閱讀推斷類型、never 類型、用于函數(shù)的 this 類型、tsconfig 對(duì) glob 的支持 等。

獲取簡(jiǎn)易申明文件 (.d.ts)

typings 和 tsd 已經(jīng)成為TypeScript 生態(tài)系統(tǒng)中極好的工具。直到現(xiàn)在,這些包管理工具幫助用戶快速地從 DefinitelyTyped 取得 .d.ts 文件,用于他們的項(xiàng)目。雖然有這些工具,對(duì)新用戶來說,學(xué)習(xí)如何通過這些包管理工具獲得和管理申明文件的依賴關(guān)系仍然是件痛苦的事情。

在 2.0 中獲取和使用申明文件會(huì)更容易,比如想獲取 lodash 的申明文件,只需要使用 NPM:

npm install -s @types/lodash

上面的命名安裝了一個(gè)范圍包 @type/lodash,這使得 TypeScript 2.0 能在程序中導(dǎo)入(import) lodash 時(shí)自動(dòng)引用 lodash 的申明。這就是說你不需要其它工具,你的 .d.ts 文件就能找到 package.json 中剩下的依賴。

值得注意的是,typeing 和 tsd 能在已經(jīng)存在的項(xiàng)目里繼續(xù)使用,然而兼容 2.0 的申明文件不再會(huì)再通過這些工具生效。因此,我們強(qiáng)烈推薦使用 TypeScript 2.0 及以后版本的 NPM 流程。

非常感謝 Blake Embrey 在 typings 的工作,是他的工作推進(jìn)了這項(xiàng)解決方案。

非空類型

JavaScript 有兩個(gè)值用于表示“空”——null 和 undefined。如果 null 是一個(gè)價(jià)值十億美元的錯(cuò)誤,undefined 會(huì)給我們帶來加倍的損失。在 JavaScript 的世界,這兩個(gè)值是巨大的錯(cuò)誤來源,因?yàn)橛脩艚?jīng)常會(huì)忘記分辨 API 中返回的 null 或 undefined 值。

TypeScript 最初的想法是所有類型都是可空的。這就是說,某個(gè)數(shù)值類型也可能出現(xiàn) null 或 undefined 值。很不幸,這并不能很好的解決 null/undefined 的問題。

在 TypeScript 2.0 中,null and undefined 擁有它們自己的類型,這讓開發(fā)者可以明確的表達(dá)是否允許 null/undefined。現(xiàn)在如果某個(gè)東西可以是數(shù)值或者 null 值,你可以使用聯(lián)合類型 number | null(讀作“number 或 null”)。

因?yàn)檫@是一個(gè)破壞性的改變,我們選項(xiàng)里添加了 --strictNullChecks 模式來允許這種行為。然后在往后的發(fā)展中,打開這個(gè)選項(xiàng)會(huì)成為一個(gè)一般的最佳實(shí)踐,這有肋于捕捉大范圍的 null/undeined 錯(cuò)誤。如果想關(guān)于非空類型的信息,請(qǐng)移步 GitHub 上的 Pull Request。

這里有一個(gè)關(guān)于非空類型的視頻

控制流程分析的類型

從 1.8 開始,TypeScript 就已經(jīng)存在控制流分析,但是從 2.0 開始我們擴(kuò)展了分析范圍,以對(duì)于在任何地方都能分析出可能的類型。現(xiàn)在,配合非空類型,TypeScript 能做更多復(fù)雜的檢查,比如明確的賦值分析。

function f(condition: boolean) {let result: number;if (condition) {result = computeImportantStuff();}// 哇哦! 'result' 可能從未初始化!return result; }

非常感謝 Ivo Gabe de Wolff 對(duì)這個(gè)特性初期的貢獻(xiàn)以及后來提供的大量反饋。你可以在 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;} }// 錯(cuò)誤!'name' 是只讀的。 new Person("Daniel").name = "Dan";

所有沒有匹配設(shè)置器的獲取器都被認(rèn)為是只讀的。

展望

TypeScript 從 JavaScript 而來。正如現(xiàn)在成千上成的 JavaScript 開發(fā)者所知道的那樣,TypeScript 開始于 JavaScript 相同的語法和語義,允許開發(fā)者使用已經(jīng)存在的 JavaScript 代碼,使用流行的 JavaScript 庫(kù),也可以從 JavaScript 中調(diào)用 TypeScript 代碼。JavaScript 可選的靜態(tài)類型使 JavaScript 開發(fā)者在開發(fā) JavaScript 應(yīng)用時(shí),可以使用高效的開發(fā)工工具和實(shí)踐,比如靜態(tài)檢查,反射等。

我們會(huì)聯(lián)合合作伙伴和社區(qū)的力量繼續(xù)發(fā)展 JavaScript 的類型系統(tǒng),讓用戶可以更深層次的將靜態(tài)類型方法用于 JavaScript。同時(shí),我們會(huì)致力于提高 TypeScript 語言服務(wù)和一系列的工具特性,使開發(fā)工具變得更智能,以提高開發(fā)者的工作效率。

向所有一路走來到 2.0 的人致謝!你們的反饋和熱情帶來了 TypeScript 及其生態(tài)如今的成就。希望你們對(duì) 2.0 的興奮程度不亞于我們。

如果你還未使用 TypeScript,一定試試!我們非常愿意聽到你的聲音。

祝愉快

TypeScript 團(tuán)隊(duì)

總結(jié)

以上是生活随笔為你收集整理的〔译〕TypeScript 2.0 正式发布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。