Typescript
#
any 和 unknownany 类型可以理解为我不在乎他的类型,而 unknown 类型可以理解为我不知道它的类型。
unknown 类型可以理解为类型安全的 any 类型。编译器会对 unknown 类型的变量提供类型检查,any 类型就不会。
#
extends 关键字extends 关键字在 TS 编程中出现的频率挺高的,而且不同场景下代表的含义不一样,特此总结一下:
- 表示继承/拓展的含义
- 表示约束的含义
- 表示分配的含义
#
interface 和 type 的区别#
相同点- 都可以用来定义对象和函数
- 它俩也支持继承,并且可以互相继承。但是具体的形式稍有差别。
interface 是通过 extends 实现的,type 是通过&实现的。
#
不同点- 可以定义的类型:
interface 可以定义对象和函数。
type 可以定义 基本类型的别名,如 type myString = string;
type 可以通过 typeof 操作符来定义,如 type myType = typeof someObj;
type 可以申明 联合类型,如 type unionType = myType1 | myType2;
type 可以申明 元组类型,如 type yuanzu = [myType1, myType2]
- 合并类型 interface 支持声明合并;type 不支持
#
高级类型- Exclude
- Extract
- Omit
- Pick