Deno 將停用 TypeScript 的五個(gè)原因
最近有一份流傳的文檔,說(shuō)是 Deno 將停止在其內(nèi)部代碼中使用 TypeScript。文檔中提到了當(dāng)前開(kāi)發(fā)環(huán)境的幾個(gè)問(wèn)題,包括了 TypeScript 編譯時(shí)間、結(jié)構(gòu)和代碼管理等。在未來(lái),Deno 的內(nèi)部代碼將使用原生 JavaScript 進(jìn)行開(kāi)發(fā)。
Deno 使用 TypeScript 的現(xiàn)存問(wèn)題
目前 Deno 團(tuán)隊(duì)在內(nèi)部代碼中使用 TypeScript 時(shí),遇到的問(wèn)題有如下這些:
當(dāng)更改文件時(shí),TypeScript 的編譯需要幾分鐘,這使得項(xiàng)目文件的連續(xù)編譯非常緩慢。 在創(chuàng)建實(shí)際的 Deno 可執(zhí)行文件和面向用戶的 API 文件時(shí),使用的 TypeScript 結(jié)構(gòu)會(huì)造成項(xiàng)目運(yùn)行的性能問(wèn)題。 事實(shí)證明,TypeScript 本身對(duì) Deno 代碼管理沒(méi)有幫助,并且 Deno 團(tuán)隊(duì)正經(jīng)受著相反的效果。在項(xiàng)目的議題列表中就提到一個(gè)問(wèn)題:在兩個(gè)不同的位置產(chǎn)生了相同的獨(dú)立主體類(lèi)。 必須手動(dòng)保持內(nèi)部代碼和運(yùn)行時(shí) TypeScript 聲明的同步,因?yàn)?TypeScript 編譯器對(duì)生成 d.ts 文件沒(méi)有幫助。 Deno 團(tuán)隊(duì)需要去維護(hù)兩臺(tái) TS 編譯器主機(jī):一個(gè)用于內(nèi)部代碼,另一個(gè)用于外部用戶代碼,盡管兩者的目標(biāo)相似。
Deno 內(nèi)部代碼刪除 TypeScript
Deno 團(tuán)隊(duì)的目標(biāo)是刪除所有構(gòu)建時(shí) TS 類(lèi)型檢查和內(nèi)部代碼的捆綁。他們打算將所有運(yùn)行時(shí)代碼移動(dòng)到一個(gè) JavaScript 文件中。然而,他們還是使用配套的 d.ts 文件來(lái)保存類(lèi)型定義和文檔記錄。
值得注意的是,Deno 將只在內(nèi)部代碼中停止使用 TypeScript,Deno 用戶代碼仍然可以使用 TypeScript,因此會(huì)進(jìn)行類(lèi)型檢查。
雖然 TypeScript 有時(shí)被視為 JavaScript 的改進(jìn)版本,但以上情況表明事實(shí)并非如此。它具有任何其他語(yǔ)言一樣的缺陷,最重要的問(wèn)題之一是編譯速度慢。從原生 JavaScript 切換到 TypeScript 時(shí),小型項(xiàng)目可能不會(huì)在編譯時(shí)間上出現(xiàn)大幅度的增長(zhǎng),但在大型項(xiàng)目(如復(fù)雜的 React 應(yīng)用程序)中,它就會(huì)很明顯??紤]到編譯運(yùn)行時(shí)長(zhǎng),Deno 將停止使用 TypeScript 也就不足為奇。
項(xiàng)目開(kāi)發(fā)過(guò)程進(jìn)行的安全性類(lèi)型檢查,在編譯時(shí)是有代價(jià)的。TypeScript 項(xiàng)目有一個(gè)關(guān)于如何解決和改進(jìn)編譯時(shí)間的文檔,這是有存在意義的。最有趣的方法之一是采取項(xiàng)目引用,它允許開(kāi)發(fā)人員將一個(gè)大的 TypeScript 代碼片段分解成更小的片段。
閱讀更多關(guān)于 Deno 停用 TypeScript 的原因。
譯者:zenblo 原文地址:https://startfunction.com/deno-will-stop-using-typescript/
