基于Vite创建开发环境
Vite是一个框架无关的前端工具链,可以快速的生成一个 React + TS 的开发环境,并且可以提供快速的开发体验
npm create vite@latest react-ts-pro -- --template react-ts
说明:
- npm create vite@latest 固定写法 (使用最新版本vite初始化项目)
- react-ts-pro 项目名称 (可以自定义)
- -- --template react-ts 指定项目模版位react+ts
useState与TypeScript
useState-自动推导
通常React会根据传入useState的默认值来自动推导类型,不需要显式标注类型
image.png
说明:
- value: 类型为boolean
- toggle: 参数类型为boolean
useState-传递泛型参数
useState本身是一个泛型函数,可以传入具体的自定义类型
image.png
说明:
- 限制useState函数参数的初始值必须满足类型为: User | ()=> User
- 限制setUser函数的参数必须满足类型为:User | ()=> User | undefined
- user状态数据具备User类型相关的类型提示
useState-初始值为null
当我们不知道状态的初始值是什么,将useState的初始值为null是一个常见的做法,可以通过具体类型联合null来做显式注解
image.png
说明:
- 限制useState函数参数的初始值可以是 User | null
- 限制setUser函数的参数类型可以是 User | null
事件与TypeScript
事件与TypeScript - 为事件回调添加类型
为事件回调添加类型约束需要使用React内置的泛型函数来做,比如最常见的鼠标点击事件和表单输入事件:
image.png
说明:通过泛型函数约束了整个事件回调函数的类型,主要是为了约束事件参数e的类型
Props与TypeScript
props与TypeScript - 基础使用
为组件prop添加类型,本质是给函数的参数做类型注解,可以使用type对象类型或者interface接口来做注解
image.png
说明:Button组件只能传入名称为className的prop参数,类型为string, 且为必填
props与TypeScript - 为children添加类型
children是一个比较特殊的prop, 支持多种不同类型数据的传入,需要通过一个内置的ReactNode类型来做注解
image.png
说明:注解之后,children可以是多种类型,包括:React.ReactElement 、string、number、React.ReactFragment 、React.ReactPortal 、boolean、 null 、undefined
props与TypeScript - 为事件prop添加类型
组件经常执行类型为函数的prop实现子传父,这类prop重点在于函数参数类型的注解
image.png
说明:
- 在组件内部调用时需要遵守类型的约束,参数传递需要满足要求
- 绑定prop时如果绑定内联函数直接可以推断出参数类型,否则需要单独注解匹配的参数类型
useRef与TypeScript
useRef与TypeScript - 获取dom
获取dom的场景,可以直接把要获取的dom元素的类型当成泛型参数传递给useRef,可以推导出.current属性的类型
image.png
useRef与TypeScript - 引用稳定的存储器
把useRef当成引用稳定的存储器使用的场景可以通过泛型传入联合类型来做,比如定时器的场景
image.png











网友评论