class Thing extends ((function () {
return null;
})()) {
doThing() {
}
}
É uma maneira realmente indireta de dizer extends null
, mas os tipos não conferem, o que é estranho. Você tem que anotar o IIFE com um tipo de ctor fictício como StringConstructor
para satisfazer o verificador.
Isso ocorre por design. a única forma suportada de extensão de null é extends null
qualquer outra coisa, deve retornar um valor cujo tipo tenha uma assinatura de construção. Excluímos qualquer um como curinga neste cenário, apenas porque é mais provável um erro do usuário aqui do que o pretendido. seria interessante ver se há casos de uso reais em que isso seria necessário.
Aqui está um caso interessante, no TypeScript 2.0 eu declaro um módulo cliente swagger como: declare module 'swagger-client';
. No entanto, quando tento usá-lo como:
import * as Swagger from 'swagger-client';
class Swagger extends Swagger {
pet: any;
constructor() {
super({
url: config.get('spec.petstore'),
usePromise: true
});
}
}
Recebo o erro Type 'any' is not a constructor function type
.
Recebi este erro quando importei do arquivo de índice assim:
import {Derived, Base} from '.'
e a classe derivada foi listada em index.ts antes da classe base:
exportar {Derived} de './Derived';
exportar {Base} de './Base';
Troquei o pedido e funcionou.
Comentários muito úteis
Aqui está um caso interessante, no TypeScript 2.0 eu declaro um módulo cliente swagger como:
declare module 'swagger-client';
. No entanto, quando tento usá-lo como:Recebo o erro
Type 'any' is not a constructor function type
.