假设我有一个扩展节点EventEmitter
的类。但我想限制可以注册的事件。
class Foo extends EventEmitter {
on(event: 'myEvent', listener: Function): this;
emit(event: 'myEvent', ...args: any[]): boolean
}
var foo = new Foo();
foo.on('wrongEvent', ()=>{}); // this should cause compiling error
这可以实现吗?
我收到错误:
t.ts(6,3): error TS2391: Function implementation is missing or not immediately following the declaration.
t.ts(7,3): error TS2391: Function implementation is missing or not immediately following the declaration.
t.ts(10,8): error TS2345: Argument of type '"wrongEvent"' is not assignable to parameter of type '"myEvent"'.
如何防止出现TS2391错误?
答案 0 :(得分:0)
我会根据@AlekseyL的评论
自己回答class Foo extends EventEmitter {
on(event: 'myEvent', listener: Function): this {
return super.on(event, listener);
};
emit(event: 'myEvent'): boolean {
return super.emit(event);
}
}