Например у меня есть класс Module и от него будут наследовать много классов. Например модуль User или модуль Session, и я хочу хранить все эти классы в одном месте.
class User extends Module {
}
api.addModule(User)
как мне описать тип аргумента принимаемый функцией addModule?
addModule (moduleClass:Function){
this.modules[moduleClass.name] = moduleClass
}
moduleClass:Function??? фанкшен работает, но мне нужны не любые функции а именно классы, да еще и унаследованные от Module
более того я хочу создать функцию addModules
api.addModules([User, Session])
чтобы можно было принимать массив классов =)
подскажите как такой параметр описать в тайпскрипте? чтобы как бы не инстанс класса, а именно сам класс или его классы наследники.
Ответ
для указания того, что нам нужен не инстанс класса, а сам класс, применяется конструкция: typeof Class
addModule(ModuleClass:typeof Module) {
this.modules[module.name] = ModuleClass
}
getModule(name:string):typeof Module {
return this.modules[name]
}
addModules(modules:typeof Module[]) {
}
моя ошибка заключалась в том что я использовал устаревший синтаксис типа typeof(Module) который я нагуглил в обсуждении разработчиков тайпскрипта которое они вели аж в 2012 году ^_^
Комментариев нет:
Отправить комментарий