掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
近日,前端框架 Svelte 的創(chuàng)建者 Rich Harris 提出要將 Svelte 從 TypeScript 切換到使用 JSDoc 的 JavaScript。這種轉變得到了 Svelte 團隊的大力支持,他們決定在 Svelte 4 代碼庫中從 TypeScript 遷移到 JavaScript JSDoc。而這個決定引起了開發(fā)社區(qū)的驚訝和懷疑。

站在用戶的角度思考問題,與客戶深入溝通,找到喀喇沁網站設計與喀喇沁網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網站設計、成都做網站、企業(yè)官網、英文網站、手機端網站、網站推廣、申請域名、虛擬主機、企業(yè)郵箱。業(yè)務覆蓋喀喇沁地區(qū)。
那為什么要從 TypeScript 轉向 JavaScript JSDoc 呢?這是否是技術的倒退?JSDoc 又是什么?它有什么特點?如何使用?下面將詳細介紹!
Svelte 是一個現(xiàn)代的 JavaScript 框架,它允許開發(fā)者以聲明式的方式寫組件,并在構建時將這些組件轉化為高效、優(yōu)化的純 JavaScript 代碼。相比于其他框架,Svelte 更加輕巧,在性能和體驗方面也有著不俗的表現(xiàn)。使用 Svelte 可以幫助開發(fā)人員更快速地構建交互式應用程序,同時還可以減少運行時性能負擔和包大小。
Svelte 團隊認為,盡管類型系統(tǒng)非常棒,但作為一種語言,TypeScript有些“麻煩”。主要問題在于使用 TypeScript 會帶來額外的工具。例如,如果在 TypeScript 中構建一個庫,并在另一個項目中使用該庫,就不能只修改代碼庫還需要重新構建代碼,這增加了不必要的復雜性。
為了規(guī)避這些問題,Svelte 團隊決定使用 JavaScript 和 JSDoc 注釋來實現(xiàn)類型安全。這種方法提供了所有類型安全的好處,而沒有與 TypeScript 相關的缺點。SvelteKit 代碼庫已經采用了這種方法,團隊計劃對 Svelte 4 進行同樣的處理。不過,作為Svelte的用戶,這不會影響在Svelte 中使用 TypeScript 的能力,從Svelte導出的函數(shù)仍將具有習以為常的所有 TypeScript 優(yōu)點(類型檢查、智能感知、內部文檔等)。
很多開發(fā)人員之所以選擇 TypeScript,是因為強類型可以減少錯誤,并通過代碼完成和彈出幫助等功能改善代碼編輯器中的開發(fā)體驗。而主要是 API 文檔工具的 JSDoc 也可以用于類型檢查。
JSDoc 是一種用于在 JavaScript 代碼中編寫文檔和類型注釋的標記語言,它使用類似于JavaDoc 的注釋語法。通過在代碼中添加特定的注釋標記,可以生成文檔,提高代碼的可讀性和可維護性。JSDoc不僅可以描述函數(shù)的參數(shù)和返回值類型,還可以用來描述類、對象、模塊和命名空間等各種 JavaScript 實體的屬性和方法。
那相較于 TypeScript,JSDoc 有什么優(yōu)點呢?
使用 JSDoc 不需要任何前置操作。只需要在 JavaScript 代碼中添加 JSDoc 注釋即可。JSDoc 注釋以“/**”開頭,以“*/”結尾,位于要描述的代碼塊之前??梢酝ㄟ^以下方式來將 JSDoc 用于類型檢查。
/**
* @type {number}
*/
const num = 42;
/**
* 兩數(shù)之和
* @param {number} x
* @param {number} y
* @returns {number} 返回值
*/
function add(x, y) {
return x + y;
}
/**
* @typedef {Object} Person
* @property {string} name - The person's name.
* @property {number} age - The person's age in years.
*/
/**
* @interface Shape
* @property {number} x
* @property {number} y
* @property {number} width
* @property {number} height
*/
JSDoc 以@標記名稱的形式提供了很多標記,常用的包括:
這些標記只是 JSDoc 提供的許多標記中的一部分。JSDoc 還提供了許多其他標記,如 @augments、@example、@ignore、@link、@since 等。通過使用這些標記,可以更好地記錄和描述 JavaScript 代碼。
需要注意,盡管可以使用 JSDoc 代替 TypeScript 進行類型檢查,但它并不像 TypeScript 一樣強制執(zhí)行類型檢查。如果在 JSDoc 注釋中錯誤地描述了類型,或者沒有提供足夠的類型信息,將無法得到類型檢查的保護,這可能會導致運行時錯誤。因此,在使用 JSDoc 進行類型檢查時,需要格外小心,并盡可能詳細地記錄變量和參數(shù)的類型。
最終 JSDoc 會取代 TypeScript 進行類型檢查嗎?我認為是不會的。TypeScript 非常適合應用開發(fā),而且它正在不斷改進。不過對于庫開發(fā)來說,使用純 JavaScript 和 JSDoc 注釋似乎是更好的選擇。
絕大多數(shù)開發(fā)人員不是在構建庫,而是在構建應用。因此,TypeScript 將保持主要的類型檢查方式,直到 JavaScript 實現(xiàn)原生類型檢查為止。
選擇 TypeScript 還是帶有 JSDoc 的 JavaScript 取決于開發(fā)團隊或開發(fā)人員的需求和偏好。對于庫作者來說,JavaScript 和 JSDoc 的簡單性和靈活性特別有吸引力的。對于已經具有構建中的應用,TypeScript 仍然可能是首選。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流