我有以下类型
enum Types {
Email = 'email',
Checkbox = 'checkbox',
}
type MappedValues = {
[Types.Email]: string;
[Types.Checkbox]: boolean;
};
type T1<T extends Types> = { type: T } & {
[key in T]: MappedValues[T];
};
type T2 = T1<Types.Email | Types.Checkbox>
用上面的例子T2
是:
{
type: 'email' | 'checkbox',
email: string,
checkbox: boolean
}
但我在寻找:
{
type: 'email',
email: string
} | {
type: 'checkbox',
checkbox: boolean
}
我浏览了整个关于打字的打字脚本文档,发现了很多有趣的东西,但没有关于我的具体情况。
是否可以这样做,或者我必须更改我的基类型(Types
,MappedValues
)?
1条答案
按热度按时间mrphzbgm1#
可以创建具有所有可能值的类型:
其中
T2
为:然后,您可以使用泛型来索引此Map,以将其转换为并集:
T2
变为: