Typescript: Typ 'any' ist kein Konstruktorfunktionstyp

Erstellt am 1. Sept. 2015  ·  3Kommentare  ·  Quelle: microsoft/TypeScript

class Thing extends ((function () {
    return null;
})()) {
    doThing() {
    }
}

Es ist ein wirklich umständlicher Weg, extends null zu sagen, aber die Typen checken nicht aus, was umständlich ist. Sie müssen das IIFE mit einem Dummy-Ctor-Typ wie StringConstructor annotieren, um den Checker zu erfüllen.

By Design

Hilfreichster Kommentar

Hier ist ein interessanter Fall, in TypeScript 2.0 deklariere ich ein Modul swagger-client wie: declare module 'swagger-client'; . Wenn ich jedoch versuche, es so zu verwenden:

import * as Swagger from 'swagger-client';

class Swagger extends Swagger {
  pet: any;
  constructor() {
    super({ 
      url: config.get('spec.petstore'),
      usePromise: true
    });
  }
}

Ich erhalte die Fehlermeldung Type 'any' is not a constructor function type .

Alle 3 Kommentare

Dies ist beabsichtigt. die einzige unterstützte Form der Erweiterung von null ist extends null alles andere muss einen Wert zurückgeben, dessen Typ eine Konstruktsignatur hat. Wir haben in diesem Szenario jeden als Platzhalter ausgeschlossen, nur weil es sich hier eher um einen Benutzerfehler handelt als beabsichtigt. Es wäre interessant zu sehen, ob es tatsächliche Anwendungsfälle gibt, in denen dies erforderlich wäre.

Hier ist ein interessanter Fall, in TypeScript 2.0 deklariere ich ein Modul swagger-client wie: declare module 'swagger-client'; . Wenn ich jedoch versuche, es so zu verwenden:

import * as Swagger from 'swagger-client';

class Swagger extends Swagger {
  pet: any;
  constructor() {
    super({ 
      url: config.get('spec.petstore'),
      usePromise: true
    });
  }
}

Ich erhalte die Fehlermeldung Type 'any' is not a constructor function type .

Ich habe diesen Fehler beim Importieren aus einer Indexdatei wie folgt erhalten:

import {Derived, Base} von '.'

und die abgeleitete Klasse wurde in index.ts vor der Basisklasse aufgeführt:

export {Derived} from './Derived';
exportiere {Base} aus './Base';

Ich habe die Reihenfolge geändert und es hat funktioniert.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen