您好,登錄后才能下訂單哦!
小編給大家分享一下TypeScript 2.7有什么改進,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
TypeScript 2.7版本引入了一些突破性的改變,開發人員在升級代碼庫以使用TypeScript 2.7時,應該知曉這些變化。
當被問及TypeScript目前的版本規劃時,項目經理Daniel Rosenwasser說:
我認為,從最廣泛的意義上來說,我們關注的是易用性,并確保我們現有的用戶繼續在TypeScript上的投入是有價值的。前者通常是減少在起步時的學習成本,后者通常關注的是表現性及安全性。
例如,現有的TypeScript用戶要求對類初始化進行更嚴格的檢查。繼TypeScript 2.6版添加了嚴格的函數類型檢查之后,2.7版本又添加了在類中使用strictPropertyInitialization標志的嚴格屬性初始化檢查。這個標志會檢查類的每個實例的屬性,確定它是在類的構造方法里被初始化的,還是通過屬性初始化程序初始化的。當升級到2.7后,使用嚴格標記的開發人員將會自動地在他們的源代碼中獲得這個額外的檢查。建議在TypeScript中使用這一嚴格的標記,因為它可以幫助開發人員找到并消除其他類型的錯誤或異常行為。
明確的賦值斷言功能也已經可用了,即使在TypeScript分析器不能確認賦值時,也可以指示TypeScript的控制流分析器始終認定一個明確已賦值的。
TypeScript的設計師之一Anders Hejlsberg表示,版本還改進了對對象字面量的類型推斷:
改進在相同上下文中出現的多個對象字面量的類型推斷。當多個對象字面量類型組成一個union類型時,我們將對象字面量類型規范化,這樣所有的屬性就會出現在union類型的每個組成部分中。
const obj = test ? { text: "hello" } : {};
// { text: string } | { text?: undefined }
const s = obj.text; // string | undefined
第一行我們推斷出obj的類型{},第二行隨后導致了錯誤,因為obj似乎沒有屬性。這顯然并不是理想的效果。
其他語言級別的改進包括改進union類型和instanceof表達式中結構相同類的處理方法,以及從操作符中推斷出更好的類型保護。
TypeScript 2.7也對ES2015+符號進行了改善支持。屬性可以使用const聲明的符號來命名,可以在接口、類或類型文字中將Identifier或PropertyAccessExpression用作計算屬性名稱的一部分。
改進了與CommonJS模塊的互操作性,支持 import d from “cjs”,并使用了esModuleInterop標志。在內部,TypeScript利用了CJS模塊的ES模塊。Rosenwasser向InfoQ解釋了這項功能背后的動機:
我們知道在模塊互操作性策略中存在一些不友好性,這使得一些用戶更難以掌握TypeScript。對于新TypeScript用戶來說,這是一個障礙,這也是為什么我們要在這個版本中提高esModuleInterop標記優先級的原因。當然,我們也有參與對ECMAScript標準的更新,并且在發展我們語言時也非常注意吸收這些標準。
第三階段的數字分隔符提議,預計將作為ES2018的一部分,現在已經包含在TypeScript中,幫助TypeScript保持當前對JavaScript語言的年度更新。
在TypeScript 2.7中,有一些改進是針對開發人員使用體驗的。像webpack和Gulp這樣的開發工具將從新的增量構建編譯器API中受益。這一變化將使工具更容易地進行因更新代碼帶來的資源更新,而不是需要在每次增量更新中重新構建整個項目。此外,ide還提供了一個更新的TypeScript語言服務API,允許開發人員自動修復文件中所有已明確的問題。
TypeScript 2.7可以通過npm的npm install -g typescript命令進行安裝,或通過GitHub獲得。
以上是“TypeScript 2.7有什么改進”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。