class Thing extends ((function () {
return null;
})()) {
doThing() {
}
}
Es una forma muy indirecta de decir extends null
, pero los tipos no revisan, lo cual es incómodo. Debe anotar el IIFE con un tipo de ctor ficticio como StringConstructor
para satisfacer al verificador.
Esto es por diseño. la única forma admitida de extender nulo es extends null
cualquier otra cosa, tiene que devolver un valor cuyo tipo tenga una firma de construcción. Hemos excluido cualquiera como comodín en este escenario, solo porque es más probable que sea un error de usuario aquí de lo que se pretendía. Sería interesante ver si hay casos de uso reales en los que esto sea necesario.
Aquí hay un caso interesante, en TypeScript 2.0 declaro un módulo swagger-client como: declare module 'swagger-client';
. Sin embargo, cuando trato de usarlo como:
import * as Swagger from 'swagger-client';
class Swagger extends Swagger {
pet: any;
constructor() {
super({
url: config.get('spec.petstore'),
usePromise: true
});
}
}
Recibo el error Type 'any' is not a constructor function type
.
Recibí este error cuando importé desde un archivo de índice así:
importar {Derivado, Base} de '.'
y la clase derivada se enumeró en index.ts antes de la clase base:
exportar {Derivado} de './Derived';
exportar {Base} desde './Base';
Cambié el orden y funcionó.
Comentario más útil
Aquí hay un caso interesante, en TypeScript 2.0 declaro un módulo swagger-client como:
declare module 'swagger-client';
. Sin embargo, cuando trato de usarlo como:Recibo el error
Type 'any' is not a constructor function type
.