泛型类使用类型作为值,或传递属性作为索引类型的索引



我有一个类似的类

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'^^

最新更新