【发布时间】:2019-02-27 08:21:00
【问题描述】:
如果这个问题已经被问过,我们深表歉意。我努力寻找解决方案,但我可能没有使用正确的术语进行搜索。
我的问题从这个结构开始。这是一个简单的映射类型:
type Mapped = {
square: {
size: number;
};
rectangle: {
width: number;
height: number;
};
};
然后我有一个类型,它试图创建一个联合:
type Unionize<T> = {
name: keyof T;
data: T[keyof T];
};
type Out = Unionize<Mapped>;
它产生这种类型:
type Generated = {
name: "square" | "rectangle";
data: {
size: number;
} | {
width: number;
height: number;
};
}
但我真正想要的是这样,因为这样我就能够利用可区分联合来推断和检查数据属性。
type Wanted = {
name: "square";
data: {
size: number;
};
} | {
name: "rectangle";
data: {
width: number;
height: number;
};
}
【问题讨论】:
标签: typescript