如何将泛型参数的类型限制为Typescript函数作为枚举

ebh*_*001 4 generics enums typescript

是否可以将输入参数的类型限制为通用Typescript函数,使其成为Typescript枚举?

换句话说,我想在下面的函数中强制T是一个非恒定的Typescript枚举 Foo<T>() { /* */ }

Tom*_*dym 5

您可以将类型限制为特定的枚举。

function foo<T extends MyEnum>(param: T) {    
}
Run Code Online (Sandbox Code Playgroud)

但是,您不能将其限制为任何枚举(请参阅specs)。

  • 这似乎仅限于一个数字,而不是枚举。因此,您可以使用foo(7);来调用它。参见[此游乐场](http://www.typescriptlang.org/play/index.html#src=enum%20MyEnum%20%7B%0D%0A%20%20%20%20FOO%0D%0A%7D% 0D%0A%0D%0Afunction%20foo%3CT%20扩展%20MyEnum%3E(param%3A%20T)%3A%20void%20%7B%20%7D%0D%0A%0D%0Afoo(MyEnum.FOO)% 3B%0D%0Afoo(7)%3B%20%2F%2F%20应该%20fail%2C%207%20is%20not%20a%20MyEnum%0D%0A) (2认同)