У меня есть несколько классов вида:
abstract class A {}
class AB extends A {}
class AC extends A {}
class AD extends A {}
Теперь в файле я хочу экспортировать отображение имени класса -> конструкторов, так что-то вроде:
export default {
AB,
AC,
AD
};
Каким должен быть тип этого экспорта?
Я пытался:
type Mappings = {
[typeName: string]: typeof A
};
, но когда я пытаюсь что-то вроде:
import mappings from '..';
let s: string;
const TypeName = mappings[s];
const pr = new TypeName(); // ERROR
Я получаю ошибку: Cannot create an instance of an abstract class
поскольку А абстрактно.
По сути, я пытаюсь выяснить, как заменить typeof A
на что-то вроде subtypeof A
или что-то еще работающее.