Linux中國

Svelte:TypeScript 並「不值得」用來開發庫

TypeScript 的使用率在不斷上升,Svelte 的開發者 Rich Harris 解釋了為什麼反其道而行,從 TypeScript 切換到 JavaScript 和 JSDoc。

Svelte 的一個將 TypeScript 轉為 JSDoc 的拉取請求引起了一些困惑的評論。評論中有人說:「這個改變是出於什麼原因呢?我在到處尋找這個問題或相關討論,但我沒有找到。」 隨後,這個問題在 GitHub 上因「討論過於激烈」而被鎖定回復。

在上個月的一次 Svelte Society 採訪中,Harris 提供了進一步的背景信息,他說:「我們決定要做的一件事就是在 Svelte 核心代碼庫中脫離 TypeScript,轉向使用 JavaScript。這裡有一些細微的複雜性我未曾充分解釋。」

他持有的觀點是:「類型是非常好的,但是 TypeScript 確實有些困擾…… 當你開始使用 .ts 文件後,你就必須有相應的工具來支持…… 當你使用像 TypeScript 這樣的非標準語言時,你會遇到很多阻礙,我已經開始認識到這並不值得。因此,我們將我們所有的類型都放入了 JSDoc 註解中,我們也能獲得所有的類型安全性,但沒有任何的缺點,因為它就是 JavaScript,所有的東西都在註解中,你可以直接運行代碼。這就是我們在 Sveltekit 代碼庫中所做的,它在 Svelte 4.0 中表現得非常好,所以我們決定對 Svelte 同樣採取這種方式,因為這將讓我們能夠更快速地前進。」

雖然 Svelte/SvelteKit 並非最受歡迎的 JavaScript 框架,但它卻是廣受好評的框架之一。

開發者傾向於使用 TypeScript,主要因為他們發現強類型降低了錯誤的發生率,並提升了編碼過程中的體驗,如代碼自動補全和即時幫助等功能。然而,令人驚訝的是,主要做為 API 文檔工具的 JSDoc,也可以進行類型檢查。這項功能已直接內置在 Visual Studio Code 中,如 這篇文檔 所述。開發者只需在 JavaScript 文件頂部加上:

// @ts-check

正如文檔中的解釋,「當無法推斷出類型時,可以利用 JSDoc 註解進行明確說明」。這個特性實際上是由 TypeScript 提供支持,這意味著在實際環境下,TypeScript 和 JSDoc 是相輔相成的。

不過,一個易被忽視的細節是,Harris 主要是在針對庫開發的上下文里關注 TypeScript。他認為切換到 JSDoc 在開發應用時,「可能收益不大」,他說道:「如果你在開發一個應用,無論怎樣你都不可避免地需要一個構建步驟。你需要優化代碼,需要代碼壓縮,需要打包各種資源。而如果你在構建一個庫,我將極力推薦你使用 JSDoc。」

Harris 在 Hacker News 進一步 補充,「Svelte 的用戶無需擔心,這個變動不會影響到你與 Svelte 使用 TypeScript 的能力——從 Svelte 導出的函數仍然會有所有熟悉的 TypeScript 好處,如類型檢查,智能感知,內聯文檔等」。他堅定地表示:「我們對 TypeScript 的承諾比以往任何時候都更為堅決。」

(題圖:DA/e20ff1ee-6388-42ce-8d82-66bc6eebf63c)

via: https://devclass.com/2023/05/11/typescript-is-not-worth-it-for-developing-libraries-says-svelte-author-as-team-switches-to-javascript-and-jsdoc/

作者:Tim Anderson 譯者:ChatGPT 校對:wxy


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國