跳到主要内容

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, 它解决了什么问题?

我们公司项目、业务中,一般会存在以下痛点:

  1. 开发时,我们会遇到很多 JS 错误,比如 data.a.b 运行出错, data.a 可能为 null; 比如说有一个 data 是一个对象,开发时不明确,以为是数组,用数组的方法导致报错。而且在删除代码、修改变量、方法、或者漏改都都会出现报错问题。所以,在开发过程中,我们无法完全避免这些问题产生,需要尽可能在编译阶段提前暴露,减少运行时错误

  2. 维护时,删除、新增、修改某个变量、函数不可避免的会出现漏改、类型不对导致线上运行时出错的问题

因此, 我们选择了 TypeScript ,原因如下:

  1. 选择 TypeScript , 会在编译阶段提前暴露出 JavaScript 常见的 8 中错误, 提升运行时代码质量

  2. 能够借助IDE智能提示,友好编写、组织代码结构

  3. 对重构友好,提升重构质量和效率

  4. Typescript 社区非常活跃,支持 ReactVue2.0Vue3.0 等前端框架,同时也有 ts-loaderswc 等性能非常好的 Typescript 编译工具