在 React 项目中使用 TS
- 创建新项目
- 在现有项目中添加 TS
创建新项目
-
命令:
npx create-react-app react-ts-app --template typescript -
说明:在命令行中,添加
--template typescript表示创建支持 TS 的项目 -
项目目录的变化:
-
在项目根目录中多了一个文件:
tsconfig.json- TS 的配置文件
-
在 src 目录中,文件的后缀有变化,由原来的 .js 变为
.ts或.tsx.tsts 文件的后缀名,不能写 React 组件.tsx是在 TS 中使用 React 组件时,需要使用该后缀 ts + xml
-
在 src 目录中,多了
react-app-env.d.ts文件(自动生成的,让我们写代码的时候有更好的提示).d.ts类型声明文件,用来指定类型
-
tsconfig的介绍
- tsconfig.json是typescript项目的配置文件,用于配置typescript
- tsconfig.json配置文件可以通过
tsc --init生成
- 说明:所有的配置项都可以通过鼠标移入的方式,来查看配置项的解释说明。
- tsconfig 官方文档链接-英文
- tsconfig 中文文档
- tsconfig 中文翻译
{
// 编译选项
"compilerOptions": {
// 生成代码的语言版本:将我们写的 TS 代码编译成哪个版本的 JS 代码
// 命令行: tsc --target es5 11-测试TS配置文件.ts
"target": "es5",
// 指定要包含在编译中的 library
"lib": ["dom", "dom.iterable", "esnext"],
// 允许 ts 编译器编译 js 文件 🔔 有些项目中,TS与JS混写,是否允许tsc编译js文件
"allowJs": true,
// 跳过类型声明文件的类型检查 🔔 第三方的包,部分有类型错误、语法错误,早期特别多
"skipLibCheck": true,
// es 模块 互操作,屏蔽 ESModule 和 CommonJS 之间的差异 🔔 允许使用ES6模块化语法,导入commonJS模块
"esModuleInterop": true,
// 允许通过 import x from 'y' 即使模块没有显式指定 default 导出 🔔 import * as React from 'react'
"allowSyntheticDefaultImports": true,
// 开启严格模式
"strict": true,
// 对文件名称强制区分大小写
"forceConsistentCasingInFileNames": true,
// 为 switch 语句启用错误报告
"noFallthroughCasesInSwitch": true,
// 生成代码的模块化标准
"module": "esnext",
// 模块解析(查找)策略
"moduleResolution": "node",
// 允许导入扩展名为.json的模块
"resolveJsonModule": true,
// 是否将没有 import/export 的文件视为旧(全局而非模块化)脚本文件
"isolatedModules": true,
// 编译时不生成任何文件(只进行类型检查)
"noEmit": true,
// 指定将 JSX 编译成什么形式
"jsx": "react-jsx"
},
// 指定允许 ts 编译的文件夹
"include": ["src"]
}
TypeScript + React + Redux
依赖安装
yarn add redux react-redux
案例 - TODO
- 在 TS 项目搭建 redux 仓库
- redux 项目添加 TS 类型注解
- 处理同步 action
\