Typescript: El tipo 'cualquiera' no es un tipo de función de constructor

Creado en 1 sept. 2015  ·  3Comentarios  ·  Fuente: microsoft/TypeScript

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.

By Design

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:

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 .

Todos 3 comentarios

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ó.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

zhuravlikjb picture zhuravlikjb  ·  3Comentarios

blendsdk picture blendsdk  ·  3Comentarios

MartynasZilinskas picture MartynasZilinskas  ·  3Comentarios

Roam-Cooper picture Roam-Cooper  ·  3Comentarios

Antony-Jones picture Antony-Jones  ·  3Comentarios