- 原文地址:TSLint in 2019
- 原文做者:Palantir
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:LucaslEliane
- 校對者:EdmondWang, WangLeto
Palantir 是 TSLint 項目(TypeScript 的標準靜態代碼分析工具)的建立者和主要的維護者。TypeScript 社區正致力於提供統一的、跨 TypeScript 和 JavaScript 兩種語言的開發體驗,咱們在致力於 TSLint 和 ESLint 的融合,在這篇文章中,咱們會解釋咱們爲何要這麼作以及如何去作。前端
如今,TSLint 事實上已是 TypeScript 項目的標準靜態代碼分析工具了。TSLint 的生態由一個核心的規範集,社區維護的多種自定義規則以及配置包組成。android
同時,ESLint 是 JavaScript 的標準靜態代碼分析工具。和 TSLint 同樣,ESLint 也是由一個核心規範集和許多社區維護的自定義規則組成。ESLint 支持 TSLint 所缺乏的不少功能,好比,條件 lint 配置和自動縮進。相反,ESLint 的規則不能受益於(至少如今不能)TypeScript 語言所提供的靜態分析以及類型推斷,所以沒法捕獲 TSLint 語義規則所覆蓋的某些類型的錯誤和代碼異味(譯者注:code smells)。ios
TypeScript 團隊的戰略方向是讓「每一個桌面,在每棟房子裏,每一個 JS 開發者都使用類型」。換句話說,這個方向主要是經過類型和靜態代碼分析來逐漸完善 JavaScript 的開發體驗,直到 TypeScript 和 JavaScript 開發體驗逐漸融合。git
很明顯,靜態代碼分析是 TypeScript 以及 JavaScript 開發體驗的一個核心部分,因此 Palantir 的 TSLint 團隊和 Redmond 的 TypeScript 核心團隊會面,討論了 TypeScript 和 JavaScript 融合對於靜態代碼分析的意義。TypeScript 社區旨在知足 JavaScript 開發人員的需求,ESLint 是 JavaScript 的首選靜態代碼分析工具。爲了不分裂 TypeScript 的靜態代碼檢查工具,咱們計劃廢棄 TSLint,而且集中精力去改進 ESLint 對於 TypeScript 的支持。咱們認爲這是正確的前進道路,具備戰略意義而且務實的緣由:github
無障礙接入:JavaScript 開發人員遷移到 TypeScript 的障礙之一是從 ESLint 到 TSLint 的無障礙遷移。容許開發人員能夠從現有的 ESLint 設置開始,逐步添加 TypeScript 特定的靜態分析規則,能夠下降這樣的遷移障礙。typescript
社區整合:TSLint 和 ESLint 有着一樣的核心目標:經過強大的規範集和可擴展的插件來提供出色的靜態代碼分析體驗。如今,在 ESLint 中提供 TypeScript 解析,咱們認爲這是讓社區標準化的最好方式,而非工具之間的競爭。後端
更高性能的分析工具:ESLint API 支持更有效地進行某些類型的檢查。雖然能夠對於 TSLint 的 API 進行重構,可是直接利用 ESLint 的架構而且將開發資源集中到其餘地方是明智的選擇。架構
投入預估:在 Palantir 中,TSLint 爲咱們的 TypeScript 語言實現的交易保駕護航;所以,其功能集和架構已經很是成熟,而且達到了穩定的狀態。所以,咱們很難肯定須要的社區貢獻,纔可以讓 TSLint 達到咱們承諾的水平。工具
Palantir 將會經過一系列功能和插件的貢獻支持 TSLint 社區實現從 TSLint 到 ESLint 的平滑過渡。(快去叫 James Henry 和其餘貢獻者一塊兒,讓這個過程開始吧),好比:性能
在 TypeScript 中編寫 ESLint 規範的支持和文檔:能夠參考這個 typescript-eslint issue。
typescript-eslint 的測試架構:ESLint 的內置規則測試器很難使用,而且測試用例語法很難閱讀。咱們會提供相似於 TSLint 的測試基礎架構的東西來保證 TSLint 規則的開發體驗不會變差。
基於語義的類型檢查規則:移植而且添加爲 TypeScript 語言服務的新的規則。
一旦咱們以爲 ESLint 中關於 TSLint 的特性已經完整,咱們就會廢棄 TSLint,而且幫助用戶們遷移到 ESLint,在那以前,咱們的主要任務包括:
繼續維護 TSLint:在 TSLint 維護中,咱們最重要的任務是確保其與 TypeScript 新版本的編譯器和功能的兼容性。
TSLint 到 ESLint 的兼容包:一旦 ESLint 靜態分析檢查功能到達了與 TSLint 相同的時候,咱們將會發布 eslint-config-palantir 包,這是將 TSLint 規則集集成到 ESLint 中的插入式替換。
咱們很高興看到 TypeScript 和 TSLint 在過去幾年中的應用變得愈來愈多,而且咱們也很高興能爲 Web 開發生態中更爲具備影響力的 TypeScript 作出貢獻!若是你有任何問題或者疑慮,請經過評論此帖子或者 Github issue 的方式與咱們取得聯繫。
Adi D.、John W.、Robert F. 和 Stephanie Y。
若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。