react中使用ts
最近在用ts写项目,遇到了一些问题
#
1. 枚举类型的使用问题- 枚举类型编译为js代码
#
2. 动态调用和赋值的问题问题: 前端需要处理一些逻辑,动态取值,这个时候只能设置state的值为
[key:string]:any
不然就会报错。如果确定要取的值的话可以定义type来专门放当前可能取到的字符串
ts文档中也描述了动态取值的问题
#
3. 定义后台接口的问题- 一般来说处理确定的类型建议写好每一个值的类型,如果是后台接口的话,之后后端可能会新添加新的逻辑,所以可以写的稍微活泛一些。
- 前端的组件的输入输出这个是一定要定义好的。我的感觉就是ts在前端的使用上,加大了前端的工作量,在项目排期没有改变的情况下,前端的工作量感觉增加了很多,一些逻辑修改后,还要去改type,很耗时。如果要公司支持ts的话,感觉项目排期是一个问题。
#
4. react中的内置类型使用- 类组件,定义state 和 props
- 函数组件 定义函数为FC传入props的泛型
- react事件
事件描述 | 事件类型 | 泛型类型 | 举例 |
---|---|---|---|
合成事件 | SyntheticEvent | null | - |
Change事件 | ChangeEvent | <T = Element> | input:React.ChangeEvent<HTMLInputElement> |
剪贴板事件 | ClipboardEvent | <T = Element> | - |
拖拽事件 | DragEvent | <T = Element> | - |
键盘事件 | KeyboardEvent | <T = Element> | - |
鼠标事件 | MouseEvent | <T = Element> | - |
触摸事件 | TouchEvent | <T = Element> | - |
滚轮事件 | WheelEvent | <T = Element> | - |
动画事件 | AnimationEvent | <T = Element> | - |
过渡事件 | TransitionEvent | <T = Element> | - |
#
5. 引入包的时候报错- 不一定是因为路径错误,可能是因为包里面没有export导出,或者文件中没有任何内容。ts识别不到当前的文件,进行报错,所以如果真的确定路径是没有任何问题的话。去看看tsconfig的配置,或者看看自己有没有export当前的模块吧
#
6. ts中引入png, svg等来源报错- 在index.d.ts文件中添加
delcare
#
7. ts中extends 和 js中的 extends- ts中的extends继承interface
- ts中的类有一些私有公有只读属性的区分,在继承中可能会有不一样的表现
- ts中的继承在类型中和keyof关键字一起使用,可以动态取类中的类型值,用于取动态值的类型
- js中的extends继承class