使用排除映射类型时无法删除可选

问题描述 投票:0回答:1

我想删除以下类型的可选字段:

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
一起使用?

typescript
1个回答
0
投票

您可以尝试 NonNullable 实用程序

type Mapped2 = { [K in Exclude<keyof Optinal, 'b'>]: NonNullable<Optinal[K]> }
© www.soinside.com 2019 - 2024. All rights reserved.