Extract<T, U>是Typescript中的一个工具类型,用于根据另一个类型U从类型T中提取属性。通过使用Extract,我们可以轻松地从一个大型类型中提取出我们需要的属性,以便后续使用。

下面是一个使用Extract的简单示例:

type OriginalType = {
  name: string;
  age: number;
  address: string;
};

type ExtractedType = Extract<keyof OriginalType, 'name' | 'age'>;

// ExtractedType的类型为 'name' | 'age'

在上面的例子中,OriginalType是一个包含name、age和address属性的类型。我们使用Extract<keyof OriginalType, ‘name’ | ‘age’>来提取出OriginalType中的’name’和’age’属性,最终得到类型为’name’ | 'age’的ExtractedType。

需要注意的是,Extract并不改变属性的类型,它只是用来选择类型中的属性。如果我们想要提取出属性的类型,可以结合使用Extract和Pick:

type OriginalType = {
  name: string;
  age: number;
  address: string;
};

type ExtractedType = Pick<OriginalType, Extract<keyof OriginalType, 'name' | 'age'>>;

// ExtractedType的类型为 { name: string; age: number; }

在上面的例子中,我们首先使用Extract<keyof OriginalType, ‘name’ | ‘age’>提取出’name’和’age’属性的键,然后再使用Pick从OriginalType中选择这些属性,最终得到类型为{name: string; age: number;}的ExtractedType。

总结一下,Extract是Typescript中一个方便的工具类型,可以用于从一个类型中提取出我们需要的属性。在实际开发中,我们可以利用Extract来简化代码,提高代码的可维护性和可读性。