我正在尝试组合一个类型,与之类似Pick
,它将从对象类型中删除某些属性.
它应该这样工作:
type ObjectType = {
key1: number,
key2: string,
key3: boolean,
key4: number[]
}
let obj: Remove<ObjectType, 'key2' | 'key4'>
Run Code Online (Sandbox Code Playgroud)
这里obj
的类型应该是:{key1:number,key3:boolean}
Jos*_*ker 18
从 TypeScript 3.5 开始,有一个Omit
帮助程序可以按照您的描述工作。
type ObjectType = {
key1: number,
key2: string,
key3: boolean,
key4: number[]
}
let obj: Omit<ObjectType, 'key2' | 'key4'> // type is { key1: number, key3: boolean }
Run Code Online (Sandbox Code Playgroud)
对于旧版本的 TypeScript (>2.8),您可以使用Eduard 在他的回答中提到的Pick
和的组合Exclude
。
我经常创建一个辅助类型来使事情不那么冗长(注意这是 TS 3.5 中使用的确切定义)
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
Run Code Online (Sandbox Code Playgroud)
Edu*_*ard 16
如果我们需要删除的属性key2
和key4
,这将工作:
type Without<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
let obj: Without<ObjectType, 'key2' | 'key4'>
Run Code Online (Sandbox Code Playgroud)
阐述:
Exclude<keyof T, K>
回报 'key1' | 'key3'
Pick<T, Exclude<keyof T, K>>
返回所需的结果 { key1: number, key3: boolean }
归档时间: |
|
查看次数: |
1503 次 |
最近记录: |