作者:我是小储哥 | 来源:互联网 | 2022-12-08 16:51
是否可以在TypeScript中将联合类型映射到另一个联合类型?
我希望能做什么
例如给定一个联合类型A:
type A = 'one' | 'two' | 'three';
我希望能够将它映射到联合类型B:
type B = { type: 'one' } | { type: 'two'} | { type: 'three' };
我试过了什么
type B = { type: A };
但这会导致:
type B = { type: 'one' | 'two' | 'three' };
这不是我想要的.
1> artem..:
您可以使用条件类型来分配联合类型的成员(条件类型总是只占用一个分支,仅用于其分配属性,我从这个答案中学到了这个方法)
type A = 'one' | 'two' | 'three';
type Distribute = U extends any ? {type: U} : never;
type B = Distribute;
/*
type B = {
type: "one";
} | {
type: "two";
} | {
type: "three";
}
*/