Typescript:如何在联合类型中使键可选

问题描述 投票:0回答:2
我的打字稿项目中有一个类型

export type Types = "APPLE" | "MANGO" | "BANANA";
这里我希望 BANANA 是可选的,即

例如,如果我使用类型中的键创建映射

const MAPPING: { [key in Types] ....
这要求我为每个键定义映射,如果我不这样做,则会出现错误:“类型中缺少属性 BANANA ......”

避免此类错误

我想让 BANANA 可选,而且我不想更改 MAPPING fn 本身,它应该保留为 [类型中的键]。

有什么办法可以实现这个目标吗?

javascript typescript
2个回答
0
投票
您可以使用交叉路口:

游乐场

export type Types = "APPLE" | "MANGO" | "BANANA"; type MakeOptional<T extends string, E extends string, V = any> = { [K in Exclude<T, E>]: V } & { [K in E]: V }; type Mapped = MakeOptional<Types, 'BANANA'>
    

0
投票

const MAPPING: { [key in Types]?: number } = { APPLE: 1 };


    

© www.soinside.com 2019 - 2024. All rights reserved.