Como as interfaces com assinaturas de construção funcionam?

Estou tendo algum problema para descobrir como os construtores de definição nas interfaces funcionam. Eu posso estar totalmente entendendo mal alguma coisa. Mas eu tenho procurado respostas por um bom tempo e não consigo encontrar nada relacionado a isso.

Como faço para implementar a seguinte interface em uma classe TypeScript:

interface MyInterface {
    new ( ... ) : MyInterface;
}

Anders Hejlsberg cria uma interface contendo algo semelhante a isso nestevídeo (cerca de 14 minutos). Mas para a vida de mim eu não posso implementar isso em uma classe.

Eu provavelmente estou entendendo mal alguma coisa, o que eu não estou recebendo?

EDITAR:

Esclarecer. Com "novo (...)" eu quis dizer "qualquer coisa". Meu problema é que não consigo nem mesmo a versão mais básica desse trabalho:

interface MyInterface {
    new () : MyInterface;
}

class test implements MyInterface {
    constructor () { }
}

Isso não está compilando para mim eu recebo "Classe 'teste' declara interface 'MyInterface' mas não o implementa: Digite 'MyInterface' requer uma assinatura de construção, mas o tipo 'teste' não possui um" ao tentar compilá-lo.

EDITAR:

Então, depois de pesquisar isso um pouco mais dado o feedback.

interface MyInterface {
    new () : MyInterface;
}

class test implements MyInterface {
    constructor () => test { return this; }
}

Não é um TypeScript válido e isso não resolve o problema. Você não pode definir o tipo de retorno do construtor. Ele retornará "teste". A assinatura do seguinte: class test {constructor () {}} Parece ser "new () => test" (obtida passando o mouse sobre "class" no editor online com apenas aquele código colado). E é isso que gostaríamos e o que eu pensava que seria.

Alguém pode fornecer um exemplo disso ou algo semelhante, onde está realmente compilando?

EDITAR (novamente ...):

Então, eu poderia ter uma ideia de por que é possível definir isso em uma interface, mas não é possível implementar em uma classe de TypeScript. Os seguintes trabalhos:

var MyClass = (function () {
    function MyClass() { }
    return MyClass;
})();

interface MyInterface {
    new () : MyInterface;
}

var testFunction = (foo: MyInterface) : void =>  { }
var bar = new MyClass();
testFunction(bar);

Então, isso é apenas um recurso do TypeScript que permite a interface javascript? Ou é possível implementá-lo no TypeScript sem ter que implementar a classe usando javascript?

questionAnswers(5)

yourAnswerToTheQuestion