Typescript
any 和 unknown#
any 类型可以理解为我不在乎他的类型,而 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