在扩展接受T
的类TextClass
时,我希望类ImplTestClass
中的属性eventList
的类型是一个具有所有可能值AllowedEvents
的数组
我似乎想不出这件事.如果有人能为我指明正确的方向,我会很高兴的!
type EventMap = Record<string, unknown>;
abstract class TestClass<T extends EventMap> {
public eventList: Array<T[keyof T]>;
constructor() {
this.eventList = [];
}
}
interface AllowedEvents extends EventMap {
created: { time: string; userId: number; createdId: number; },
removed: { time: string; userId: number; removedId: number; }
}
class ImplTestClass extends TestClass<AllowedEvents> {
getEventList() {
return this.eventList;
// I would like `eventList` to have the type
// ({ time: string; userId: number; createdId: number; } | { time: string; userId: number; removedId: number; })[]
}
};