我想删除以下类型的可选字段:
type Optinal = {
a?: string;
b?: number;
}
type Mapped1 = { [K in keyof Optinal]-?: Optinal[K] }
/*
type Mapped1 = {
a: string;
b: number;
}
*/
如上所述,这很好。但是,虽然我还想从映射中排除一些字段,例如:
type Mapped2 = { [K in Exclude<keyof Optinal, 'b'>]-?: Optinal[K] }
/*
type Mapped2 = {
a: string | undefined;
}
*/
然后
a
的场Mapped2
变成了string | undefined
。
为什么
-?
不能与 Exclude
一起使用?
您可以尝试 NonNullable 实用程序
type Mapped2 = { [K in Exclude<keyof Optinal, 'b'>]: NonNullable<Optinal[K]> }