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.
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.
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:Ich erhalte die Fehlermeldung
Type 'any' is not a constructor function type
.