今天第 n 次被問到為何如此嫌棄 typescript 以及它的缺點到底有多慘,因此快速整理了一下手邊資料與例子,先講結論:
ts 傾向 completeness 但只做半套因此極不安全,flow 傾向 soundness 並盡量做到最好因此相對較安全。
🤓
用一張圖看 ts 缺點最快,並總結三點如下:
1.unsound 代表無法確保 runtime 不會出錯
2. 不支援 runtime type checking 因此像載入 JSON 資料時無法確保安全性
3. 萬惡的 any 只要用下去程式安全網就消失無蹤,而不幸的它是許多人的最愛
總之採用 ts 的下場就是無止盡的挫折、咒罵與專案延遲😌
同場加映一個趣味 bug,猜猜理應能正常執行的程式為何被 tsc 報錯?😗
但既然這麼多人用所以 ts 總該有些俱體好處吧?
1. 程式碼內可看到型別能有效降低認知負擔
2. 可提供精準自動完成並且重構程式較不易出錯(例如變數更名)
3. 能抓到明顯的型別錯誤(但對 edge case 無能為力)
4. 潮,而且有比沒有好🤡
因此真正重要的關鍵問題是:
1. 團隊與公司是否值得花大量時間與成本來獲取上開好處?
2. 有無其它解決方案效果一樣好但成本低很多?
3. 更簡言之 → 用了 ts 後你真的有爽到嗎?🧐
所以從前端開發的角度來說,眼前有哪些更好的選擇?在此簡單依採行難易度表列如下:
js, flow, elm, reasonML/purescript/haskell, rust
篇幅有限細節就不多說,但簡單講越後面的越好啦😎
最後且聽老納一句勸👇
♥️都要戴套了當然選不會破的否則不如直接中...(喂喂🔞
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.
