《TypeScript教程》知识点

112 阅读1分钟

记录TypeScript教程中不熟悉和新学习到的点,温故知新~

交叉类型

交叉类型(intersection types)指的多个类型组成的一个新类型,使用符号&表示。

交叉类型A&B表示,任何一个类型必须同时属于A和B,才属于交叉类型A&B,即交叉类型同时满足A和B的特征。

交叉类型的主要用途是表示对象的合成

let obj:
  { foo: string } &
  { bar: string };

obj = {
  foo: 'hello',
  bar: 'world'
};

上面示例中,变量obj同时具有属性foo和属性bar。

交叉类型常常用来为对象类型添加新属性。

type A = { foo: number };

type B = A & { bar: number };

定义只读数组的三种方式

const a1:ReadonlyArray<number> = [0, 1];

const a2:Readonly<number[]> = [0, 1];

const arr = [0, 1] as const;

泛型ReadonlyArray<T>Readonly<T[]>都可以用来生成只读数组类型。两者尖括号里面的写法不一样,Readonly<T[]>的尖括号里面是整个数组(number[]),而ReadonlyArray<T>的尖括号里面是数组成员(number)。as const告诉 TypeScript,推断类型时要把变量arr推断为只读数组。