class A {}
class B {}
class C {}
class D {}
class Example {
public static ClassesByName = { A:A,B:B,C:C,D:D };
public stringToClass<
Hash extends typeof Example.ClassesByName,
T extends keyof Hash,
>(className: T) {
const klass = Example.ClassesByName[className]; //<- Type 'T' cannot be used to index type '{ A: typeof A; B: typeof B; C: typeof C; D: typeof D; }'.
}
}
我得到了这个错误:
Type 'T' cannot be used to index type '{ A: typeof A; B: typeof B; C: typeof C; D: typeof D; }'.
在这条线上:
const klass = Example.ClassesByName[className];
className
是延伸keyof Hash
的T
类型.Hash
是typeof Example.ClassesByName
的延伸.
一切都是相连的,那么为什么Typescrip告诉我不能使用className
来索引Example.ClassesByName
,以及我如何修复它?