安装typescript

  1. // 全局安装
  2. npm install -g typescript
  3. // 查看本机安装版本
  4. npm view typescript version

通过create-react-app创建TS项目

  1. npx create-react-app my-app_ts --template typescript

更新 tsconfig.json

最新的React/TypeScript会带有默认的tsconfig,推荐更新为以下内容

  1. {
  2. "compilerOptions": {
  3. "target": "es5", // 指定 ECMAScript 版本
  4. "lib": [
  5. "dom",
  6. "dom.iterable",
  7. "esnext"
  8. ], // 要包含在编译中的依赖库文件列表
  9. "allowJs": true, // 允许编译 JavaScript 文件
  10. "skipLibCheck": true, // 跳过所有声明文件的类型检查
  11. "esModuleInterop": true, // 禁用命名空间引用 (import * as fs from "fs") 启用 CJS/AMD/UMD 风格引用 (import fs from "fs")
  12. "allowSyntheticDefaultImports": true, // 允许从没有默认导出的模块进行默认导入
  13. "strict": true, // 启用所有严格类型检查选项
  14. "forceConsistentCasingInFileNames": true, // 不允许对同一个文件使用不一致格式的引用
  15. "module": "esnext", // 指定模块代码生成
  16. "moduleResolution": "node", // 使用 Node.js 风格解析模块
  17. "resolveJsonModule": true, // 允许使用 .json 扩展名导入的模块
  18. "noEmit": true, // 不输出(意思是不编译代码,只执行类型检查)
  19. "jsx": "react", // 在.tsx文件中支持JSX
  20. "sourceMap": true, // 生成相应的.map文件
  21. "declaration": true, // 生成相应的.d.ts文件
  22. "noUnusedLocals": true, // 报告未使用的本地变量的错误
  23. "noUnusedParameters": true, // 报告未使用参数的错误
  24. "experimentalDecorators": true, // 启用对ES装饰器的实验性支持
  25. "incremental": true, // 通过从以前的编译中读取/写入信息到磁盘上的文件来启用增量编译
  26. "noFallthroughCasesInSwitch": true
  27. },
  28. "include": [
  29. "src/**/*" // *** TypeScript文件应该进行类型检查 ***
  30. ],
  31. "exclude": ["node_modules", "build"] // *** 不进行类型检查的文件 ***
  32. }

配置ESLint / Prettier

为了确保代码遵循项目或团队的规则,并且样式保持一致,建议设置 ESLint 和 Prettier 。
1.安装依赖

  1. yarn add eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-react --dev

2.在根目录下创建一个eslintrc.js 文件并添加以下内容:

  1. module.exports = {
  2. parser: '@typescript-eslint/parser', // 指定ESLint解析器
  3. extends: [
  4. 'plugin:react/recommended', // 使用来自 @eslint-plugin-react 的推荐规则
  5. 'plugin:@typescript-eslint/recommended', // 使用来自@typescript-eslint/eslint-plugin的推荐规则
  6. ],
  7. parserOptions: {
  8. ecmaVersion: 2018, // 允许解析最新的 ECMAScript 特性
  9. sourceType: 'module', // 允许使用 import
  10. ecmaFeatures: {
  11. jsx: true, // 允许对JSX进行解析
  12. },
  13. },
  14. rules: {
  15. // 自定义规则
  16. // e.g. "@typescript-eslint/explicit-function-return-type": "off",
  17. },
  18. settings: {
  19. react: {
  20. version: 'detect', // 告诉 eslint-plugin-react 自动检测 React 的版本
  21. },
  22. },
  23. };

3.添加 Prettier 依赖

  1. yarn add prettier eslint-config-prettier eslint-plugin-prettier --dev

4.在根目录下创建一个 .prettierrc.js 文件并添加以下内容:

  1. module.exports = {
  2. semi: true,
  3. trailingComma: 'all',
  4. singleQuote: true,
  5. printWidth: 120,
  6. tabWidth: 4,
  7. };

更新 .eslintrc.js 文件:

  1. module.exports = {
  2. parser: '@typescript-eslint/parser', // 指定ESLint解析器
  3. extends: [
  4. 'plugin:react/recommended', // 使用来自 @eslint-plugin-react 的推荐规则
  5. 'plugin:@typescript-eslint/recommended', // 使用来自@typescript-eslint/eslint-plugin的推荐规则
  6. 'prettier/@typescript-eslint', // 使用 ESLint -config-prettier 禁用来自@typescript-eslint/ ESLint 与 prettier 冲突的 ESLint 规则
  7. 'plugin:prettier/recommended',
  8. ],
  9. parserOptions: {
  10. ecmaVersion: 2018, // 允许解析最新的 ECMAScript 特性
  11. sourceType: 'module', // 允许使用 import
  12. ecmaFeatures: {
  13. jsx: true, // 允许对JSX进行解析
  14. },
  15. },
  16. rules: {
  17. // 自定义规则
  18. // e.g. "@typescript-eslint/explicit-function-return-type": "off",
  19. },
  20. settings: {
  21. react: {
  22. version: 'detect', // 告诉 eslint-plugin-react 自动检测 React 的版本
  23. },
  24. },
  25. };

VSCode 扩展和设置

我们添加了 ESLint 和 Prettier ,下一步就是在保存时自动修复/美化我们的代码。
首先,安装 VSCode 的 ESLint extension 和 Prettier extension 。这将使 ESLint 与您的编辑器无缝集成。
接下来,通过将以下内容添加到您的中来更新工作区设置 .vscode/settings.json :

  1. {
  2. "editor.formatOnSave": true
  3. }