bin*_*les 6 discriminated-union typescript
是否可以在TypeScript中将联合类型映射到另一个联合类型?
我希望能做什么
例如给定一个联合类型A:
type A = 'one' | 'two' | 'three';
Run Code Online (Sandbox Code Playgroud)
我希望能够将它映射到联合类型B:
type B = { type: 'one' } | { type: 'two'} | { type: 'three' };
Run Code Online (Sandbox Code Playgroud)
我试过了什么
type B = { type: A };
Run Code Online (Sandbox Code Playgroud)
但这会导致:
type B = { type: 'one' | 'two' | 'three' };
Run Code Online (Sandbox Code Playgroud)
这不是我想要的.
art*_*tem 12
您可以使用条件类型来分配联合类型的成员(条件类型总是只占用一个分支,仅用于其分配属性,我从这个答案中学到了这个方法)
type A = 'one' | 'two' | 'three';
type Distribute<U> = U extends any ? {type: U} : never;
type B = Distribute<A>;
/*
type B = {
type: "one";
} | {
type: "two";
} | {
type: "three";
}
*/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1389 次 |
最近记录: |