TypeScript Utility Types - Omit: TypeScript 实用类型 - Omit
本篇介绍 TypeScript 实用类型中的 Omit
类型。Omit<Type, Keys>
从类型中选取所有属性,然后通过删除指定键来构造类型。以下面的 User
类型为例:
1 | type User = { |
经 Omit
类型转换后得到:
1 | type User = { |
转换后的 OmitUser
类型与下面的类型是等价的:
1 | type OmitUser = { |
那么,Omit
是如何转换类型的呢?我们通过它的类型定义来分析一下:
1 | /** |
Omit
源码的类型定义中有几点需要注意:
K extends keyof any
:这段代码表示泛型K
继承自联合类型keyof any
;Pick
是 TypeScript 中作用于全局的实用类型,用于从类型中选取一组属性键来构造类型[1];Exclude
是 TypeScript 中另一个作用于全局的实用类型,通过排除联合类型中的指定成员来构造新类型[2];- 通过
Exclude
转换后的类型结果就是要挑选出来的成员,再经过Pick
将他们从类型T
中选取出来。
在不了解 Pick
和 Exclude
类型作用的情况下,一般难以看懂 Omit
类型的源码。下面参考部分有相关的传送门,当你理解了 Pick
和 Exclude
后回头再看 Omit
就能理解了。