sin*_*dre 4 discriminated-union typescript
我有一个生成的联合类型,看起来像:
type Result = { type: 'car' } | { type: 'boat' }
Run Code Online (Sandbox Code Playgroud)
如何将它们分开,以便为每个类型创建单独的类型?例如:
type BoatResult = { type: 'boat' }
type CarResult = { type: 'card' }
Run Code Online (Sandbox Code Playgroud)
它们必须从原始Result类型创建。
您可以使用Extract条件类型从Extract扩展给定类型的联合中获取类型。如果您的联合实际上像问题中一样简单,那么它没有多大意义,但是如果您有额外的字段,您可以使用它从联合中提取完整类型。
type Result = { type: 'car', a: number } | { type: 'boat', b: string }
type Car = Extract<Result, { type: 'car' }> //{ type: 'car', a: number }
type Boat = Extract<Result, { type: 'boat'} > // { type: 'boat', b: string }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |