為什麼我反對過度使用TypeScript?

前夕Sama發表於2024-04-28

前言

在2024年, TypeScript肯定算不上什麼新鮮的技術. 但是經過長時間的使用, 我認為可以使用, 但是要適度.

型別跟不上業務的變化

我們知道TypeScript的型別定義是業務的體現. 但是業務的變化在很多公司都是非常快的. 在產品功能上可能更改了一點點型別定義, 但是你的型別系統可能要大改. 這當中不排除是當初設計的不合理, 但即使設計地再合理, 產品一樣有辦法讓你的合理變得不合理. 因為產品需求永遠是'合理'的. 基於此, 你要麼花更多的時間去維護型別, 要麼就逐漸走向AnyScript.

團隊水平跟不上

實際上, 絕大部分團隊水平是不具備熟練使用TypeScript的. 當一個新手遇到看不懂的型別的時候, 為了跑通程式碼, 直接一手可選鏈操作, 並不是什麼罕見的行為. 而可選鏈可能是最小的災難. 為了讓程式碼跑通, 你無法預估他們會做什麼樣的修改, 以及哪些修改是合理的. 此時又考驗你們團隊的review執行力度了. 一環套一環.

電腦效能壓力

這一點我是沒什麼感覺的, 因為我電腦效能過剩. 64G記憶體, 怎麼折騰都沒事. 但是很多人的記憶體只有16G甚至是8G, TypeScript的型別推導必然需要消耗一些記憶體. 大家是否經歷過等待VSC載入型別系統的時候呢? 過於複雜的型別推導更會加劇這個現象.

image-20240428224919517

拒絕極端

我在這裡, 並不是告訴大家不要用TypeScript. 相反, 我是堅定的TypeScript擁護者. 只是根據我的經驗, 發現這個東西可能還是中庸更適合. 不使用TypeScript, 會導致維護火葬場. 但是過度使用, 比如各種體操到處竄, 大機率後面維護的人也會很難受. 如何定義過度使用? 這個就看你們團隊水平和專案情況了. 就我自己來看, Omit, Pick, 泛型, 這些都算正常使用. 一旦要自己寫type去推導, 我建議慎重考慮.

總結

技術上的東西, 往往是沒有銀彈的. 需要根據你專案的情況和現有資源進行選型. 像一些非常知名的repo的TypeScript確實也用的爐火純青. 但是他們是他們, 我們是我們. 需要根據自己的情況來定.

相關文章