2
respostas

Como passar classes no parâmetro

Boa tarde, tudo bem? No javascript quando preciso passar uma classe como parâmetro, simples passo o nome dela, como no exemplo abaixo. Como posso fazer o mesmo no typescript?

function createObject ( classe ) {
    return new classe();
}

const NEW_OBJECT = createObject ( Map );
2 respostas

Tem de criar uma interface para a sua classe como esta:

interface IMyClass {
    new (name: string): MyClass;
}

Depois, use-o na sua assinatura de função:

function sample(MyClass: IMyClass) {
    var obj = new MyClass("hello");
}

Deixa ver seu entendi, primeiro tenho que criar uma interface, com a estrutura semelhante a que passou, depois tenho que fazer as classes que desejo instanciar implementarem esta interface, para depois poder usá-las como no exemplo acima. É isso?