二,代碼風格。原來代碼風格比較亂的話,推薦使用 prettier,簡單配置之後跑個命令行腳本(或者在 WebStorm 中調用 prettier 工具)就可以格式化所有代碼了,比較省心。也可以用 ESLint 加上 --fix 參數,不過配置相對來說繁瑣壹些。
三,升級 TS,既然重構的話,TS 推薦直接升級到最新版(目前版本是 2.8),新版的 TS 類型表達能力更強壹些,而且升級的 break changes 很少。在 tsconfig.json 中將 noImplicitAny 設置為 true(或者將 strict 設置為 true),完善之前缺失的類型信息。在變量類型都是清晰且確定的情況下,重構其實是挺簡單的,所以先補充壹下原來缺失的類型信息。如果某個類型需要後續重構的話,可以暫時使用 any,然後在旁邊加個 TODO。
四,自底向上的組件重構。重構壹些小組件的接口,完善其 props/state 類型信息。重構組件的實現之後,調整調用該組件的代碼(WebStorm:Find Usages,然後根據 TS 報錯信息填上正確的 props 即可)。壹般來說,小組件的重構不會導致整個應用跑不起來,重構過程中可以在旁邊打開前端應用,重構完成之後網頁表現和原來壹樣的話就說明重構沒啥問題。
五,自頂向下的狀態重構。使用 React 的話,頂層組件的狀態壹般比較豐富,我們也往往會使用 Redux 來管理應用全局狀態。許多子組件都會依賴這些全局狀態(或是頂層組件的狀態),所以最好使用 type/interface 關鍵字將這些狀態的類型顯式地寫出來。例如下圖就是壹個前端應用的 Redux store 管理的狀態。其他地方(例如調用 react-redux 的 connect 函數)使用 State 就能方便的引用該類型了。