我有一个IconName
类型,如下所示:
type IconName = 'cars' | 'mars' | 'truck' | 'warning'
然后我想创建另一种类型VehicleIconName
,其中包含与车辆相关的所有图标名称:
type VehicleIconName = 'cars' | 'truck'
但是如何告诉TypeScript VehicleIconName
中的每个字符串也必须是IconName
类型?
所以我不能这样写:
type VehicleIconName = 'cars' | 'truck' | 'invalidIconName'
答案 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)