如何创建以编程方式扩展联合类型 class 的泛型
How to create generic that extends union type of class programaticaly
我有以下代码:
const events = {
a: ['event1' as const, 'event2' as const],
b: ['event3' as const, 'event4' as const],
};
class SomeClass<
T extends AnotherClass<typeof events[keyof typeof events][number]>
> {}
T
将是:T in SomeClass<T extends AnotherClass<"event1" | "event2" | "event3" | "event4">>
但我想看看:T in SomeClass<T extends AnotherClass<"event1" | "event2"> | AnotherClass<"event3" | "event4">>
除了像这样列出所有选项之外,是否有更好的方法来实现此结果:
class SomeClass<
T extends
| AnotherClass<typeof events.a[number]>
| AnotherClass<typeof events.b[number]>
> {}
我们可以映射events
的属性:
class SomeClass3<
T extends {
[K in keyof typeof events]: AnotherClass<typeof events[K][number]>
}[keyof typeof events]
> {}
我有以下代码:
const events = {
a: ['event1' as const, 'event2' as const],
b: ['event3' as const, 'event4' as const],
};
class SomeClass<
T extends AnotherClass<typeof events[keyof typeof events][number]>
> {}
T
将是:T in SomeClass<T extends AnotherClass<"event1" | "event2" | "event3" | "event4">>
但我想看看:T in SomeClass<T extends AnotherClass<"event1" | "event2"> | AnotherClass<"event3" | "event4">>
除了像这样列出所有选项之外,是否有更好的方法来实现此结果:
class SomeClass<
T extends
| AnotherClass<typeof events.a[number]>
| AnotherClass<typeof events.b[number]>
> {}
我们可以映射events
的属性:
class SomeClass3<
T extends {
[K in keyof typeof events]: AnotherClass<typeof events[K][number]>
}[keyof typeof events]
> {}