分隔联合类型的每个成员
Separate each member of a union type
我有一个 生成的 联合类型,看起来像这样:
type Result = { type: 'car' } | { type: 'boat' }
如何将它们分开,以便我可以为它们中的每一个创建一个单独的类型?例如:
type BoatResult = { type: 'boat' }
type CarResult = { type: 'card' }
必须从原始 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 }
我有一个 生成的 联合类型,看起来像这样:
type Result = { type: 'car' } | { type: 'boat' }
如何将它们分开,以便我可以为它们中的每一个创建一个单独的类型?例如:
type BoatResult = { type: 'boat' }
type CarResult = { type: 'card' }
必须从原始 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 }