TypeScript:从特定类型创建字符串的联合类型

时间:2020-06-25 10:50:19

标签: typescript types

我有一个IconName类型,如下所示:

type IconName = 'cars' | 'mars' | 'truck' | 'warning'

然后我想创建另一种类型VehicleIconName,其中包含与车辆相关的所有图标名称:

type VehicleIconName = 'cars' | 'truck'

但是如何告诉TypeScript VehicleIconName中的每个字符串也必须是IconName类型?

所以我不能这样写:

type VehicleIconName = 'cars' | 'truck' | 'invalidIconName'

1 个答案:

答案 0 :(得分:4)

您可以添加一个助手类型:

type Subset<Parent, Sub extends Parent> = Extract<Parent, Sub>;

type IconName = 'cars' | 'mars' | 'truck' | 'warning'

type VehicleIconName = Subset<IconName, 'cars' | 'truck' | 'invalidName'>

最后一行错误:

键入““汽车” | “卡车” | “ invalidName”'不满足约束'IconName'。
类型““ invalidName””不能分配给类型“ IconName”。ts(2344)

相关问题