Я хочу написать класс-оболочку для набора элементов перечисления.
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 ипараметр в конструкторе, каков тип объекта enum?
Указав тип в конструкторе, я мог бы написать:
let fls=new U.Flags(Props);
(ts выведет тип из спецификации вконструктор)