TypeScript最佳實踐:是否使用noImplicitAny

我應該使用noImplicitAny TypeScript編譯器標誌嗎?

noImplicitAny編譯器選項所作的,基本上是將TypeScript從可選類型語言轉換爲強制類型檢驗語言。這使得TypeScript離JavaScript的超集稍微遠了一些,由於簡單的:javascript

function logMe(x) {
  console.log(x);
}
// error TS7006: Parameter 'x' implicitly has an 'any' type.

也將報錯——你必須明確聲明x的類型爲any:java

function logMe(x: any) {
  console.log(x);
}
 // OK

這意味着,若是你要把現有的JS代碼庫遷移到TS,那除了更改文件擴展名,你還得作一些較複雜的東西。這還意味着,在編寫代碼時,您須要更多地關注類型,若是不指定類型,編譯器就老是會「抱怨」。因爲在實際狀況中顯式地聲明any被認爲是很差的實踐,因此在開發過程的早期,您就須要分配正確的類型。若是沒有顯式的聲明,這可能意味着「我太懶了,沒有正確地註釋這裏的類型」。code

這樣子究竟是好是壞是有很大爭議的,社區在這個問題上彷佛存在分歧。下面是一些業界領先的TypeScript項目,以及它們是否使用了noImplicitAny編譯器標誌:ip

Project Uses noImplicitAny
Angular YES
RxJS YES
VSCode NO
Babylon.js NO

接下來下面是個人觀點:咱們使用TypeScript,是由於類型提供了有意義的額外信息,能夠做爲文檔、並在早期捕獲錯誤。若是想在項目的代碼中都享受這種益處,那就不該該只在某個地方添加類型——把它們添加到任何地方,就能夠完成了。ci

不然你就有可能作出以下額外的思考:開發

「嗯,我應該在這裏添加類型嗎?我有點懶,但這很好,但我還有其餘工做要作……「咱們明天再作吧。」

所以,個人建議是將noImplicitAny設置爲true文檔

相關文章
相關標籤/搜索