У меня есть такая структура кода:
interface ITool {
repair(): void;
}
type HandlersMap = Map<string, ITool>;
abstract class AbstractTool {
constructor(protected qpr, protected ctx) { }
abstract async repair(): Promise<void>
}
class DebugTool extends AbstractTool implements ITool {
async repair(): Promise<void> {
this.logger.info(`Repaired item: ${this.qpr.type}`);
}
}
class ToolFactory {
private handlersMap: HandlersMap = new Map([
['debug-message', DebugTool]
]);
createTool(type: string): ITool {
...
}
}
, что приводит к ошибке:
handlersMap: свойство 'repair' отсутствует в типе 'typeof DebugTool', но требуется в введите 'ITool'.
Я знаю, что это потому, что я не создал экземпляр класса в качестве значения Map, но все еще реализую интерфейс, на который я ссылаюсь. В чем проблема и какой интерфейс следует использовать для значения Карты?