一、为什么要学习TS
1、对比
2、优点
(1)包容性
1、Typescript是javascript的超集,.js文件可以直接重命名为.ts即可。
2、即使不显示的定义类型,也能够自动做出类型推导。
3、可以定义从简单到复杂的几乎一切类型。
4、兼容第三方库,即使第三方库不是用 TypeScript 写的,也可以编写单独的类型文件供 TypeScript 读取。
(2)可维护性和可读性
1、类型系统实际上是最好的文档,大部分的函数看看类型的定义就知道如何使用了。
2、可以在编译阶段就发现大部分的错误,这总比在运行时出错好。
3、增强了编译器和IDE的功能,包括代码补全,接口提示,跳转到定义,重构等。
二、TS基础
1、基础类型
(1)JS原有类型
原始类型:number/string/boolean/null/undefined/symbol。
对象类型:object(包括,数组、对象、函数等对象)
(2)TS新增类型
接口:接口(Interface)可以描述函数、对象、构造器的结构
元组:元组(Tuple)就是元素个数和类型固定的数组类型
枚举:枚举类型用于定义数值集合。 void:用于标识方法(函数)返回值的类型,表示该方法没有返回值。
any :声明为 any 的变量可以赋予任意类型的值。
unknown:是未知类型,任何类型都可以赋值给它,但是它不可以赋值给别的类型。
2、函数
3、interface
4、基础类
三、TS进阶
1、高级类型
(1)联合类型 |
定义:联合类型(Union)类似 js 里的或运算符 |,但是作用于类型,代表类型可以是几个类型之一。
let num : number |string
num=1
num='sss'\
(2)交叉类型&
定义:交叉类型(Intersection)类似 js 中的与运算符 &,但是作用于类型,代表对类型做合并。
(3)类型断言
有时候你会比 TS 更加明确一个值的类型,此时,可以使用类型断言来指定更具体的类型。\
实例:
使用:
(4)类型别名
当一个复杂类型或者联合类型过多或者被频繁使用时,可以通过类型别名来简化该类型的使用。
2、泛型
泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
四、实战&工程向
1、文件声明
- declare:三方库需要类型声明文件
- .d.ts:声明文件定义
- @types:三方库TS类型包
- tsconfig.json:定义TS的配置
2、泛型约束后端接口类型
当一个对象类型被多次使用时,一般使用接口(interface)描述对象的类型,达到复用的目的
- 我们使用interface关键字来声明接口
- 接口名称推荐以为开头
- 声明接口之后,直接使用接口名称作为变量的类型
-
- 因为每一行只有一个属性类型,因此,属性类型后没有 ;(分号)
建议用下下面:\