溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

TypeScript 2.7有什么改進(jìn)

發(fā)布時(shí)間:2021-12-16 10:28:05 來源:億速云 閱讀:129 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下TypeScript 2.7有什么改進(jìn),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

TypeScript 2.7版本引入了一些突破性的改變,開發(fā)人員在升級(jí)代碼庫(kù)以使用TypeScript 2.7時(shí),應(yīng)該知曉這些變化。

當(dāng)被問及TypeScript目前的版本規(guī)劃時(shí),項(xiàng)目經(jīng)理Daniel Rosenwasser說:

我認(rèn)為,從最廣泛的意義上來說,我們關(guān)注的是易用性,并確保我們現(xiàn)有的用戶繼續(xù)在TypeScript上的投入是有價(jià)值的。前者通常是減少在起步時(shí)的學(xué)習(xí)成本,后者通常關(guān)注的是表現(xiàn)性及安全性。

例如,現(xiàn)有的TypeScript用戶要求對(duì)類初始化進(jìn)行更嚴(yán)格的檢查。繼TypeScript 2.6版添加了嚴(yán)格的函數(shù)類型檢查之后,2.7版本又添加了在類中使用strictPropertyInitialization標(biāo)志的嚴(yán)格屬性初始化檢查。這個(gè)標(biāo)志會(huì)檢查類的每個(gè)實(shí)例的屬性,確定它是在類的構(gòu)造方法里被初始化的,還是通過屬性初始化程序初始化的。當(dāng)升級(jí)到2.7后,使用嚴(yán)格標(biāo)記的開發(fā)人員將會(huì)自動(dòng)地在他們的源代碼中獲得這個(gè)額外的檢查。建議在TypeScript中使用這一嚴(yán)格的標(biāo)記,因?yàn)樗梢詭椭_發(fā)人員找到并消除其他類型的錯(cuò)誤或異常行為。

明確的賦值斷言功能也已經(jīng)可用了,即使在TypeScript分析器不能確認(rèn)賦值時(shí),也可以指示TypeScript的控制流分析器始終認(rèn)定一個(gè)明確已賦值的。

TypeScript的設(shè)計(jì)師之一Anders Hejlsberg表示,版本還改進(jìn)了對(duì)對(duì)象字面量的類型推斷:

改進(jìn)在相同上下文中出現(xiàn)的多個(gè)對(duì)象字面量的類型推斷。當(dāng)多個(gè)對(duì)象字面量類型組成一個(gè)union類型時(shí),我們將對(duì)象字面量類型規(guī)范化,這樣所有的屬性就會(huì)出現(xiàn)在union類型的每個(gè)組成部分中。

const obj = test ? { text: "hello" } : {}; 
// { text: string } | { text?: undefined } const s = obj.text; // string | undefined

第一行我們推斷出obj的類型{},第二行隨后導(dǎo)致了錯(cuò)誤,因?yàn)閛bj似乎沒有屬性。這顯然并不是理想的效果。

其他語言級(jí)別的改進(jìn)包括改進(jìn)union類型和instanceof表達(dá)式中結(jié)構(gòu)相同類的處理方法,以及從操作符中推斷出更好的類型保護(hù)。

TypeScript 2.7也對(duì)ES2015+符號(hào)進(jìn)行了改善支持。屬性可以使用const聲明的符號(hào)來命名,可以在接口、類或類型文字中將Identifier或PropertyAccessExpression用作計(jì)算屬性名稱的一部分。

改進(jìn)了與CommonJS模塊的互操作性,支持 import d from “cjs”,并使用了esModuleInterop標(biāo)志。在內(nèi)部,TypeScript利用了CJS模塊的ES模塊。Rosenwasser向InfoQ解釋了這項(xiàng)功能背后的動(dòng)機(jī):

我們知道在模塊互操作性策略中存在一些不友好性,這使得一些用戶更難以掌握TypeScript。對(duì)于新TypeScript用戶來說,這是一個(gè)障礙,這也是為什么我們要在這個(gè)版本中提高esModuleInterop標(biāo)記優(yōu)先級(jí)的原因。當(dāng)然,我們也有參與對(duì)ECMAScript標(biāo)準(zhǔn)的更新,并且在發(fā)展我們語言時(shí)也非常注意吸收這些標(biāo)準(zhǔn)。

第三階段的數(shù)字分隔符提議,預(yù)計(jì)將作為ES2018的一部分,現(xiàn)在已經(jīng)包含在TypeScript中,幫助TypeScript保持當(dāng)前對(duì)JavaScript語言的年度更新。

在TypeScript 2.7中,有一些改進(jìn)是針對(duì)開發(fā)人員使用體驗(yàn)的。像webpack和Gulp這樣的開發(fā)工具將從新的增量構(gòu)建編譯器API中受益。這一變化將使工具更容易地進(jìn)行因更新代碼帶來的資源更新,而不是需要在每次增量更新中重新構(gòu)建整個(gè)項(xiàng)目。此外,ide還提供了一個(gè)更新的TypeScript語言服務(wù)API,允許開發(fā)人員自動(dòng)修復(fù)文件中所有已明確的問題。

TypeScript 2.7可以通過npm的npm install -g typescript命令進(jìn)行安裝,或通過GitHub獲得。

以上是“TypeScript 2.7有什么改進(jìn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI