TypeScript
一、数据
1.1 any 和 unknow 的区别?
二、类型
2.1 用 Ts 实现一个数据类型,获取任何函数的返回值类型?
type ReturnType<T extends (...arg: any) => any> = T extends (...arg:any) => infer R ? R : any;
//infer R 表示待推断的函数返回值。如果T能够赋值给(...arg:any) => infer R则结果是R,否则是any
2.2 TypeScript 中 Interface 与 Type 的区别?在写 TypeScript 的时候,该用哪个比较好?
三、泛型
3.1 number[]
类型注解 与 Array<>
有什么区别?
四、场景
4.1 用的比较多的特性是什么?
4.2 如何在接口中去除/挑选某些字段?
五、开放式
5.1 为什么要引入 TypeScript, 它解决了什么问题?
我们公司项目、业务中,一般会存在以下痛点:
-
开发时,我们会遇到很多
JS
错误,比如data.a.b
运行出错,data.a
可能为null
; 比如说有一个data
是一个对象,开发时不明确,以为是数组,用数组的方法导致报错。而且在删除代码、修改变量、方法、或者漏改都都会出现报错问题。所以,在开发过程中,我们无法完全避免这些问题产生,需要尽可能在编译阶段提前暴露,减少运行时错误 -
维护时,删除、新增、修改某个变量、函数不可避免的会出现漏改、类型不对导致线上运行时出错的问题
因此, 我们选择了 TypeScript
,原因如下:
-
选择
TypeScript
, 会在编译阶段提前暴露出JavaScript
常见的8
中错误, 提升运行时代码质量 -
能够借助IDE智能提示,友好编写、组织代码结构
-
对重构友好,提升重构质量和效率
-
Typescript
社区非常活跃,支持React
、Vue2.0
、Vue3.0
等前端框架,同时也有ts-loader
、swc
等性能非常好的Typescript
编译工具