多个枚举类型的Typescript类型

4

我在应用程序中有多个枚举类型

enum HondaModels {
   Accord = 'Accord',
   ...
}
enum ToytaModels {
   Camry = 'Camry',
   ...
}

在我的代码中,我检查传递给我的汽车型号是本田或丰田。

我想声明一个类型,要么是HondaModels或ToyotaModels。

如果我尝试这样做,我会得到一个错误。

 type modelTypes: HondaModels || ToyotaModels

有没有更好的方法来拥有一个自定义类型,它是多个枚举类型之一?
2个回答

5

我会避免使用字符串枚举。使用带判别联合更好,因为枚举是强类型的。

const HondaModels = {
  Accord: "Accord",
} as const;
type HondaModels = typeof HondaModels[keyof typeof HondaModels];

const ToyotaModels = {
  Camry: "Camry",
} as const;
type ToyotaModels = typeof ToyotaModels[keyof typeof ToyotaModels];

type modelTypes = HondaModels | ToyotaModels;

3
您有一个语法错误。
enum HondaModels {
   Accord = 'Accord',
}
enum ToytaModels {
   Camry = 'Camry',
}

type modelTypes =  typeof HondaModels | typeof ToytaModels

// Then use it like this
let abc: modelTypes = HondaModels

感谢Aluan Haddad提供的改进方案。

谢谢您的回复。我实际上想把abc存储为所有的HondaModels或ToyotaModels,NissanModels等。let abc = HondaModels这会返回一个错误。 - Ray Saudlach
3
@RaySaudlach,对于后者,您需要将联合类型设置为枚举类型的类型,而不是它们的成员:type modelTypes = typeof HondaModels | typeof ToytaModels - Aluan Haddad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接