我有三种类型
type TypeA = {
name: "A",
prop1: string,
}
type TypeB = {
name: "B",
prop2: string,
}
type Default = {
name: string,
}
type AllTypes = TypeA | TypeB | Default
现在,我有了一个已批准的键的联合可用于构造对象类型.
type Approved = "A" | "B" | "C" | "D"
我想要这样的类型:
type Result = {
A?: TypeA,
B?: TypeB,
C?: Default,
D?: Default,
}
这可能吗?我try 过这样的东西,但效果不佳
type FromUnion<T extends AllTypes, K extends Approved> = {
[K in Approved]?: Extract<T, {name: K}>
}
FromUnion<AllTypes, "A"> // gives me the `AllTypes` type.