返回

TypeScript泛型Omit<T, K> 深入理解

前端

TypeScript Omit<T, K> 深入理解

Omit<T, K>的语法

Omit<T, K>的语法非常简单,它接受两个类型参数:T和K。T是我们要操作的类型,K是要从T中排除的属性。

Omit<T, K>

例如,我们有一个Person类型,它具有name和age两个属性:

type Person = {
  name: string;
  age: number;
};

如果我们想从Person类型中排除age属性,我们可以使用Omit<T, K>来生成一个新的类型:

type PersonWithoutAge = Omit<Person, "age">;

PersonWithoutAge的类型现在只包含name属性:

type PersonWithoutAge = {
  name: string;
};

Omit<T, K>的应用场景

Omit<T, K>在实际开发中有很多应用场景,其中一些常见的场景包括:

  • 从对象中排除不需要的属性。
    例如,我们有一个用户对象,它包含name、email、password等属性。如果我们要将这个用户对象发送给服务器,我们可以使用Omit<T, K>来排除password属性,以保护用户的隐私。
  • 创建只读类型。
    我们可以使用Omit<T, K>来从类型T中排除所有可写属性,从而创建一个只读类型。这可以防止意外修改对象的状态。
  • 创建部分类型。
    我们可以使用Omit<T, K>来从类型T中排除一些属性,从而创建一个部分类型。这可以使我们的代码更加灵活和可重用。

Omit<T, K>的局限性

Omit<T, K>也有一个局限性,那就是它只能从类型T中排除属性,而不能添加属性。如果我们要向类型T中添加属性,我们需要使用Pick<T, K>泛型。

Pick<T, K>的语法与Omit<T, K>类似,它接受两个类型参数:T和K。T是我们要操作的类型,K是要从T中选择的属性。

Pick<T, K>

例如,我们有一个Person类型,它具有name和age两个属性:

type Person = {
  name: string;
  age: number;
};

如果我们想从Person类型中选择name属性,我们可以使用Pick<T, K>来生成一个新的类型:

type PersonWithName = Pick<Person, "name">;

PersonWithName的类型现在只包含name属性:

type PersonWithName = {
  name: string;
};

总结

Omit<T, K>和Pick<T, K>是TypeScript中非常有用的两个泛型,它们可以帮助我们轻松地操作类型。在实际开发中,这两个泛型都有很多应用场景。