「用TS改寫幼兒難度的React App」相關筆記

總結

快速入門 React 後,將其 JS 部分改為 TypeScript,記錄下相關筆記以及轉換途中遇到的坑 另外因為已經學過 Vue,故以下筆記會包含一些與 Vue 類似或相異的比較

JS 版原始碼:https://github.com/tzynwang/react-practice/tree/speed-converter TS 版原始碼:https://github.com/tzynwang/react-practice/tree/speed-converter-ts

教材內容取自:從 Hooks 開始,讓你的網頁 React 起來

版本

react: 17.0.2
typescript: 4.4.4

React 部分

JSX

useState()

改裝為 TS

將 TS 加入專案中

透過以下手續將原本是 JS 的 React 專案改為 TS 版本:

  1. npm install --save typescript @types/node @types/react @types/react-dom @types/jest
  2. package.json 中的scripts/build內容改為tsc
  3. npx tsc --init
  4. 根據實際情況調整 tsconfig.json 中rootDirrootDir的設定(官方文件預設為srcbuild
  5. 設定jsxpreserve(參考討論串:Error when opening TSX file: Cannot use JSX unless ‘—jsx’ flag is provided
  6. .js副檔名改為.ts.tsx(enable JSX with TypeScript,參考TS 官方文件

完整說明參考 React 官方文件:Adding TypeScript to a Project 備註:如果是要從零開始一個 React+TS 專案的話,直接npx create-react-app <app-name> --template typescript即可

將原始碼改為 TS

關於 React.FC

參考 React+TypeScript Cheatsheets,小總結:不建議使用React.FC,可改用React.VFCReact.FC與一般 function 不同的部分如下列:

補充

named export, default export

export

參考文件