Это то, что вы пытаетесь сделать?
type Module = {
created: number;
}
class Test<T extends string> {
constructor(
public readonly moduleName: T
) { }
getModule = (modules: {
[key: string]: Module
}): Module => modules[this.moduleName]
}
Вы пытаетесь смешать stati c, печатая с динамической c сборкой во время выполнения. Без предоставления системе типов информации о возможных значениях, таких как ModuleNames
в качестве строкового литерального распознаваемого объединения, мало что может рассказать вам о том, что это делает во время выполнения.
Похоже, этот объект займет ключевой объект модулей и возврат из этого «своего собственного модуля».
Примерно так:
type Module = {
created: number;
}
interface ModuleCache { [key: string]: Module }
class Test<T extends string> {
constructor(
public readonly moduleName: T
) { }
getModule = (modules: ModuleCache): Module =>
modules[this.moduleName]
}