【问题标题】:Typescript Function Accepting Any Enum接受任何枚举的打字稿函数
【发布时间】:2021-04-08 04:14:21
【问题描述】:

我想创建一个接受任何枚举的函数。例如

function AcceptOne(one: Enumerator) {}

使用枚举

enum Animal {
    Dog = 'Dog'
}

然后调用

AcceptOne(Animal.Dog);

但我得到了错误

“Animal”类型的参数不能分配给“Enumerator”类型的参数

【问题讨论】:

  • Enumerator 和 enum 是两个截然不同的东西。
  • 能否请您说明一个您可以接受“任何”枚举的场景?
  • 枚举不安全。在任何情况下都不要这样做。看看这个例子typescriptlang.org/play?#code/…。枚举也是可变的

标签: typescript


【解决方案1】:

“无法确保参数是枚举,因为 TS 中的枚举不继承自共同的祖先或接口。”,取自 here

假设您的枚举只有字符串值,您不妨将one 类型更改为string,然后这些枚举值中的任何一个都可以使用:

enum Animal {
    Dog = 'Dog'
}

enum Food {
    Pie = 'Pie'
}

function AcceptOne(one: string) {
  console.log(one)
}

AcceptOne(Animal.Dog);
AcceptOne(Food.Pie);

Sandbox link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 2020-04-30
    • 2021-11-08
    • 1970-01-01
    • 2018-07-05
    • 2019-03-04
    • 2020-05-09
    • 2017-05-09
    相关资源
    最近更新 更多