微軟提議為 JavaScript 原生增加類型標(biāo)注
微軟日前提出了一項新的提案,在提案中希望可以為 JavaScript 帶來可選的類型語法,該提案可能會使 JavaScript 原生自帶 TypeScript 的一些特性,使 TypeScript 語言更快、更容易使用。
具體而言,該提案要求將類型標(biāo)注(Type Annotations)添加到 JavaScript 代碼中,允許類型標(biāo)注被外部類型檢查器檢查。在運行時,JavaScript 引擎會忽略這些標(biāo)注并將這些類型視為注釋。該提案要求 JavaScript 為類型劃出一套語法,JavaScript 引擎將忽略這些語法,但 TypeScript、Flow 等工具可以使用。這項建議將為 ECMAScript 增加可選的類型語法。
該提案的目的是讓開發(fā)者能夠運行用 TypeScript、Flow 或其他靜態(tài)類型的 JavaScript 超集所編寫的程序,而不需要轉(zhuǎn)譯。微軟在公告中表示,新的語法將有效地起到注釋作用,而不會改變代碼的運行方式。
微軟在提案中還表示,在過去十年中,靜態(tài)類型檢查的案例已經(jīng)被證明相當(dāng)成功。對 JavaScript 的大量投資(如微軟 TypeScript、Google Closure Compiler 和 Facebook Flow)為在 JavaScript 中聲明和使用類型提供了方便的語法,并獲得了在其他靜態(tài)類型語言中所看到的生產(chǎn)力的提高。它們的語法大多不會影響運行時的語義,實際上將這些變體轉(zhuǎn)換為普通的 JavaScript 的大部分工作都是在刪除類型。
此外在 2020 和 2021 年的 JS 調(diào)查中,靜態(tài)類型也一直是 JavaScript 開發(fā)者強烈要求的一個功能。
類型語法在 JavaScript 中的興起與下層編譯(或稱轉(zhuǎn)譯)的興起相吻合。因為類型語法在 JavaScript 中沒有得到原生支持,所以必須有一個工具能夠在運行代碼之前刪除這些類型。對于像 TypeScript 和 Flow 這樣的類型系統(tǒng)來說,將類型清除步驟與語法降級相結(jié)合是有意義的,這樣用戶就不需要運行單獨的工具。
這個提案將減少對構(gòu)建步驟的需求,使一些開發(fā)設(shè)置變得更加簡單,用戶將可以更加簡單地運行他們編寫的代碼。
微軟在提案中并沒要求將 TypeScript 的類型檢查放在每個瀏覽器和 JavaScript 運行時中,也沒要求在瀏覽器中放置一個新的類型檢查器。微軟認為這將給 JavaScript 和 TypeScript 用戶帶來運行時的性能和兼容性問題,也有可能阻止創(chuàng)新。目前該提案還處于 Stage 0 階段,更多提案內(nèi)容可查看微軟官方頁面。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:微軟提議為 JavaScript 原生增加類型標(biāo)注
本文地址:https://www.oschina.net/news/186336/microsoft-type-annotations-for-javascript