我有一个类似的类
interface Events {
ready: [Date];
start: [];
stop: [];
}
export abstract class Event<Name extends keyof Events> {
public abstract readonly name: Name;
public someFunction(args: Events[Name]) {
callSomeFunction(this.name, args);
}
}
我在问,是否可以通过某种方式删除泛型类型或name
属性来避免代码中的重复?
好的,我发现了一些有效的东西:
export abstract class Event {
public abstract readonly name: keyof Events;
public someFunction(args: Events[this['name']]) {
callSomeFunction(this.name, args);
}
}
所以我可以这样做:
class ReadyEvent extends Event {
name = 'ready';
}
不放入多次'ready'
^^