【问题标题】:Typescript Type of multiple enumsTypescript 多个枚举的类型
【发布时间】:2020-05-24 19:12:38
【问题描述】:

我的应用中有多个枚举

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

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

我想声明一个类型是 HondaModels 或 ToyotaModels

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

 type modelTypes: HondaModels || ToyotaModels

有没有更好的方法来拥有一个作为多个枚举之一的自定义类型?

【问题讨论】:

    标签: typescript enums


    【解决方案1】:

    我也会避免使用字符串枚举。使用有区别的联合要好得多,因为枚举是强类型的。

    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;
    

    【讨论】:

      【解决方案2】:

      你有一个语法错误

      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 ``` 这会返回一个错误
      • @RaySaudlach,对于后者,您需要联合是枚举类型的联合,而不是它们的成员:type modelTypes = typeof HondaModels | typeof ToytaModels
      猜你喜欢
      • 2018-10-18
      • 2022-09-23
      • 1970-01-01
      • 2019-12-30
      • 2018-10-31
      • 1970-01-01
      • 2020-09-18
      • 2017-08-19
      • 2018-10-13
      相关资源
      最近更新 更多