[英]JSDoc + IDE vs. TypeScript
通過正確維護 JSDoc,幾乎所有現代 IDE 都可以識別類型不匹配(賦值、函數簽名/參數)以及非強類型語言引入的許多其他問題。
除此之外,現代 JS 還具有可預測的變量范圍、無提升行為、模塊化、內置類支持等等。
在哪種場景下,TypeScript 比 JS+JSDoc 更能滿足開發者的需求?
注釋:我指的是強制支持遺留 JS/瀏覽器的情況,TS + Babel 可以將現代代碼庫轉換為一些對遺留友好的環境。
我覺得這個比較有點奇怪。 JSDoc 是面向文檔的,而 typescript 為 js 添加了可選的靜態類型。 這些工具確實有一些共同點,例如它們允許進行類型檢查,但它們的目的不同。
不過這是一個有趣的問題。 我想鼓勵就該主題進行討論,因此我將從我使用這些工具的經驗中談一談。
我對 jsdoc 的主要問題是以下部分至關重要:
正確維護 JSDoc
jsdoc 對自動完成的有用性直接取決於 jsdoc 注釋的努力和質量。 我發現在大項目中很難執行。 復雜的類型/接口也很難描述和維護,非常冗長。 另一方面,Ts 比 jsdoc 簡潔得多。
此外,ts 中的類型和接口是一等公民,而不僅僅是為了文檔而添加的。 它們是源代碼中的實體,可以導出供其他模塊使用。 在編譯過程中(和之前)強制執行類型不匹配。 還有一些機制,如泛型或裝飾器,隨 ts 一起提供。
回到執行指南部分。 使用 ESLint,您可以設置靈活的規則,允許您為您的類型微調限制/樣式/指南。 你想要嚴格的靜態類型嗎? 或者你想要寬大處理?
如果需要,您可以強制執行您的確切需求並連接到 ci/cd。 在我看來,這在從事大項目時是一個很大的收獲。
工具也是一個重要因素,jsdoc 和 ts 都足夠成熟,可以圍繞它們建立生態系統。 盡管此時jsdoc 還不是一個活躍的項目,但 ts 非常受歡迎,並且圍繞它擁有一個擁有大量活動的龐大社區。
所以這一切都取決於您的需求,如果您對 jsdoc 可以為您做的事情感到滿意並且文檔是您的主要關注點,那么 ts 不會為您做太多。
Typescript 和 Closure 等各種 Js 編譯器正式支持使用 JSDoc 進行類型檢查https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html
如果您想鍵入檢查 Js 源代碼,這是一個有效的選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.