【发布时间】:2019-09-16 17:37:22
【问题描述】:
我想强制 Generic 成为 numerical enum。我的意思是 Enum 类型应该只有数值。下面是一个例子:
export type TNumberEnum<Enum> = { [key in keyof Enum]: number };
enum sample {
AA,
BB,
CC = 'cc'
}
class SampleClass<CustomEnum extends TNumberEnum<CustomEnum>> {
constructor( private value: CustomEnum ){}
public sampleFunctin(): CustomEnum {
return this.value;
}
}
let a = new SampleClass<sample>( sample.CC ); // It should fail, keyof sample has string value
// valueOf and toString maybe could they cause problems?
我将自定义 Enum 传递给 SampleClass,但是,我想要 Generic 枚举为数字枚举。有可能吗?
【问题讨论】:
-
喜欢this? value
sample和 typesample之间有一个difference。 -
我不认为 Enum 直接从数字扩展而来。从
string的枚举中删除CC,编译通过并添加一些具有string值的成员,枚举不满足number类型。解决了。 -
那么,如果我把它写出来,我的评论会成为你的答案吗?
-
@jcalz 是的,先生!
标签: typescript