创建项目
npx create-react-app 项目名 --template typescript
项目目录结构
// 根目录// 新增tsconfig.json文件 ts的配置文件 指定ts在编译时的选项// src目录// 组件的扩展名变为tsx// 新增react-app-env.d.ts 项目默认的类型声明文件// 使用三斜线指令指定依赖的其他类型声明文件 types 表示依赖的类型声明文件包的名称/// <reference types='react-acripts'>// react-acripts 包 提供类型声明// react react-dom node 的类型// 图片 样式 等其他模块的类型 允许在代码中导入图片 svg等文件
tsconfig.json
项目文件和编译所需要的配置项
使用 tsc—init 可以自动生成该文件
{// 编译配置"compilerOptions": {// 编译为js的版本"target": "es5",// 指定要包含在编译中的 libary (库)"lib": ["dom","dom.iterable","esnext"],// 允许ts编译为js 文件"allowJs": true,// 跳过声明文件的类型检查"skipLibCheck": true,// 屏蔽 ES6 和 CommonJs 间的差异"esModuleInterop": true,// 允许 使用 import X from 'y' 进行导入 模块没有default也是可以的"allowSyntheticDefaultImports": true,// 开启严格模式"strict": true,// 文件名强制区分大小写"forceConsistentCasingInFileNames": true,// 为switch 语句启用错误报告"noFallthroughCasesInSwitch": true,// 指定生成代码的模块化标准"module": "esnext",// 模块解析策略"moduleResolution": "node",// 允许导入扩展名为json的文件"resolveJsonModule": true,// 是否将 没有 import/export 的文件作为全局非模块化的脚本文件"isolatedModules": true,// 编译时不生成任何文件 使用babel进行处理"noEmit": true,// 指定jsx编译为的语法"jsx": "react-jsx"},// 指定项目中允许ts 处理的目录 自动装载其中的 .d.ts文件"include": ["src"]}
react中常用类型
// 函数组件// FC 函数组件的类型 也可以不写FC 使用TS的类型推论// 属性的默认值函数名.defaultProps = {属性名:值}或者直接使用ES6 的默认值
