你為什么不用TS

想不想用其實(shí)是看公司的,如果在的部門現(xiàn)在使用的是vue2,本身就不支持我使用TS。
不過(guò),我本人還是不愿意使用TS的。因?yàn)門S已經(jīng)違背我之前學(xué)習(xí)JS的初心了,我學(xué)JS本身就是因?yàn)槠浔旧淼撵`活,不是強(qiáng)定義類型,變量直接定義賦值即可,這幾點(diǎn)吸引了我。雖然我也知道TS易于管理,易于后期維護(hù),我也學(xué)習(xí)了TS,并且在Vue3,React中使用過(guò)typescript寫過(guò)幾個(gè)自己的小項(xiàng)目。如果未來(lái)的項(xiàng)目或者以后的公司要求使用TS,我也會(huì)使用的。
但是這并不影響我不想用TS,我覺得加入了一堆泛型,接口(interface)和定義好數(shù)據(jù)類型的變量的JS代碼,不是最初喜歡的那個(gè)JS了。我喜歡的JS是那個(gè)無(wú)拘無(wú)束的JS,雖然我改BUG錯(cuò)誤的時(shí)候也改的頭皮發(fā)麻,但是我就是喜歡寫JS的感覺。TS雖然縱有千般好,但抵不過(guò)我寫你時(shí)不爽的一時(shí)過(guò)。
接下來(lái)我們聊聊 TypeScript 附帶的其它問(wèn)題。這些問(wèn)題需要具體問(wèn)題具體解決,所以我在這里不提供解決方案,只是告訴讀者可能面臨的問(wèn)題以及可以解決到什么程度。本人用的是 2019 macbook pro (CPU: 2.6 GHz Intel Core i7 + Mem: 32 GB 2400 MHz DDR4)。
1、hot reload 速度慢。以前改完代碼之后立刻會(huì)重新刷新頁(yè)面或者熱啟 node 服務(wù)器。然而現(xiàn)在有 TypeScript 之后還有額外的 transpile 一步。reload 的速度直接從幾秒變成幾十秒。我們做了一些優(yōu)化,但是還是不能像以前那么快。
2、VSCode 占用資源暴增。VSCode intellisense 速度緩慢。最難受的是報(bào)錯(cuò)是在寫完該行后 10 秒左右。做了優(yōu)化之后稍微好了一些。
3、第三方庫(kù)不支持 typscript。這個(gè)可以解決,就是自己寫 typed interface。
4、天書一般的報(bào)錯(cuò)信息。很高一部分比例的錯(cuò)誤長(zhǎng)這個(gè)樣子:
No overload matches this call.Overload 1 of 3, '(props: { href: string; } & { action?: ((instance: ButtonBaseActions | null) => void) | RefObject| null | undefined; ... 8 more ...; TouchRippleProps?: Partial<...> | undefined; } & { ...; } & CommonProps<...> & Pick<...>): Element' , gave the following error.Type '{ to: string; label: string; classes: { root: string | undefined; }; }' is not assignable to type 'IntrinsicAttributes & { href: string; } & { action?: ((instance: ButtonBaseActions | null) => void) | RefObject| null | undefined; ... 8 more ...; TouchRippleProps?: Partial<...> | undefined; } & { ...; } & CommonProps<...> & Pick<...>' .Property 'to' does not exist on type 'IntrinsicAttributes & { href: string; } & { action?: ((instance: ButtonBaseActions | null) => void) | RefObject| null | undefined; ... 8 more ...; TouchRippleProps?: Partial<...> | undefined; } & { ...; } & CommonProps<...> & Pick<...>' .。。。
說(shuō)了這么多,如果你問(wèn)我是否推薦 TypeScript,我只能說(shuō)看情況。type check 對(duì)于大型項(xiàng)目來(lái)說(shuō)太重要了。讀和寫代碼的時(shí)候,有 type 也會(huì)在一些方面提高程序員的效率。但是我認(rèn)為 TypeScript 可以提高的空間還有很多。如果你很在乎開發(fā)速度,快速迭代,那么建議你繼續(xù)用 JavaScript。如果你需要高穩(wěn)定性,那么建議你使用 TypeScript。

