Как правильно исправить ошибку TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature

Всем привет! Никак не могу избавится от ошибки, очень прошу подсказать знающих. Вот модуль с ошибкой.

import Manager from './Manager';

// Тут получаю TS2351 : Cannot use 'new' with an expression whose type lacks a call or construct signature.
const header = new (Manager.getHeader())();

// Можно решить так, но это костыль
const header = new (Manager.getHeader() as any)();

Модуль Manager

import DefaultHeader from './Headers/DefaultHeader/DefaultHeader';
import SwitchHeader from './Headers/SwitchHeader/SwitchHeader';
import TextHeader from './Headers/TextHeader/TextHeader';

// Какой тип нужно описать в возврате этой функции? Помогает typeof DefaultHeader, но есть ещё и TextHeader и другие?
function getHeader(name?: string): Function {
    switch (name) {
        case 'Text':
            return TextHeader;
        case 'Switch':
            return SwitchHeader;
        default:
            return DefaultHeader;
    }
}

export { getHeader, и много другого }

Сами Header представляют из себя классы с конструктором.

export default class DefaultHeader extends Header {
    constructor(params?: IHeaderConfig) {
        const conf: IHeaderConfig = {
            template
        };
        super(params, conf);
    }
}

Ответы (1 шт):

Автор решения: NocteFury

Попробуй использовать что-то вроде Type разработанный разработчиками Angular. Это синтаксис при котором ты четко указываешь, что возвращаемый тип содержит конструктор, который может быть вызван через new.

→ Ссылка