Typescript: O tipo 'qualquer' não é um tipo de função de construtor

Criado em 1 set. 2015  ·  3Comentários  ·  Fonte: microsoft/TypeScript

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.

By Design

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:

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 .

Todos 3 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jbondc picture jbondc  ·  3Comentários

fwanicka picture fwanicka  ·  3Comentários

uber5001 picture uber5001  ·  3Comentários

CyrusNajmabadi picture CyrusNajmabadi  ·  3Comentários

kyasbal-1994 picture kyasbal-1994  ·  3Comentários