【发布时间】:2018-10-10 11:23:34
【问题描述】:
我想写一个枚举的一组元素的包装类。
export class Flags<ENUMERATION> {
items = new Set<ENUMERATION>();
enu; // what type ?
constructor(enu) { // what type ?
this.enu=enu;
}
set(id:ENUMERATION) { this.items.add(id); return this; }
// an use: an arbitrary string references an enum element or is rejected
setChecking(id:string):boolean{
if (id in this.enu){
let what = this.enu[id];
this.items.add(what);
return true;
}
return false;
}
// .....
}
所以
enum Props{ One, Two, Three };
let fls=new U.Flags<Props>(Props);
fls.set(Props.One);
fls.set("asdf"); // ts detectes the wrong value
fls.set(Props.Two);
if (!fls.setChecking("xxxx")) // Some external string can be checked agains the set/enum
throw or whatever
我的问题是构造函数中的属性enu和参数是什么类型,枚举对象的类型是什么?
在我可以写的构造函数中指定类型:
let fls=new U.Flags(Props);
(ts 会根据构造函数中的规范推断类型)
【问题讨论】:
标签: typescript generics typing