class Thing extends ((function () {
return null;
})()) {
doThing() {
}
}
C'est une façon vraiment détournée de dire extends null
, mais les types ne vérifient pas, ce qui est gênant. Vous devez annoter l'IIFE avec un type de facteur fictif comme StringConstructor
pour satisfaire le vérificateur.
C'est par conception. la seule forme prise en charge d'étendre null est extends null
toute autre chose, doit retourner une valeur dont le type a une signature de construction. Nous en avons exclu en tant que caractère générique dans ce scénario, simplement parce qu'il s'agit plus probablement d'une erreur de l'utilisateur que prévu. il serait intéressant de voir s'il existe des cas d'utilisation réels où cela serait nécessaire.
Voici un cas intéressant, dans TypeScript 2.0 je déclare un module swagger-client comme : declare module 'swagger-client';
. Cependant, lorsque j'essaie de l'utiliser comme :
import * as Swagger from 'swagger-client';
class Swagger extends Swagger {
pet: any;
constructor() {
super({
url: config.get('spec.petstore'),
usePromise: true
});
}
}
J'obtiens l'erreur Type 'any' is not a constructor function type
.
J'ai eu cette erreur lorsque j'ai importé à partir du fichier d'index comme suit :
importer {Dérivé, Base} de '.'
et la classe dérivée était répertoriée dans index.ts avant la classe de base :
exporter {Dérivé} de './Dérivé' ;
exporter {Base} depuis './Base' ;
J'ai changé la commande et cela a fonctionné.
Commentaire le plus utile
Voici un cas intéressant, dans TypeScript 2.0 je déclare un module swagger-client comme :
declare module 'swagger-client';
. Cependant, lorsque j'essaie de l'utiliser comme :J'obtiens l'erreur
Type 'any' is not a constructor function type
.