【发布时间】:2020-06-22 12:01:40
【问题描述】:
我有一个函数:
public doSomethingWithEnum(enumType) {
// Iterate over enum keys with Object.keys(enumType)
}
我可以这样使用它:
export enum MyEnum { SomeEnumValue = 'SomeEnumValue', SomeOtherValue = 'SomeOtherValue' }
doSomethingWithEnum(MyEnum);
没关系,它有效。问题是我想要那个参数的类型,所以我可以将它传递给任何枚举。目前,它也可能是:any,我认为这太开放了。
有没有办法限制/指定该参数的类型?
我的尝试
我知道可以通过列出已知类型来限制这一点,例如:
doSomethingWithEnum(enumType: MyEnum | MyOtherEnum)
但我需要它比这更具可扩展性,我不希望每次不同的消费者需要调用服务时都附加一个类型。
【问题讨论】:
-
你想限制什么?我会假设需要
enumType: MyEnum,但显然你想要更广泛的东西。有多宽? -
理想情况下,
enum- 我知道这是不可能的。下一个最好的事情是什么?某种类型的字典,我在想。 -
VS 代码实际上试图为我推断一个类型,它想出了类似
[x: string]: string但它不会运行(它不接受枚举)所以它不是一个类型可能需要一个枚举,但它促使我想到还有别的东西 -
任何枚举 = 任何对象 所以只需
enumType: object -
@AlekseyL。 -
object是否比any更特定于枚举类型?
标签: typescript types enums parameters