Écrire un fichier de déclaration d'un module d'export par défaut
J'ai un mnp module appelé RiveScript que d'habitude (en Javascript) est instanciée de cette façon:
var RiveScript = require('rivescript');
var rivescript = new RiveScript();
Je suis en train d'écrire un fichier de déclaration pour le module, mais je suis bloqué à la première étape. Voici ce que j'ai écrit jusqu'à présent:
declare module "rivescript" {
interface RivescriptOptions {
utf8?: boolean;
}
class RiveScript {
constructor(options?: RivescriptOptions);
}
export default RiveScript;
}
Alors je suppose que dans la Machine, je serais en utilisant le module de cette façon (d'importation par défaut):
import RiveScript from 'rivescript';
let rivescript = new RiveScript();
Cependant, tsc
génère, ce qui n'est pas valide car il fait référence à un default()
fonction:
const rivescript_1 = require('rivescript');
let rivescript = new rivescript_1.default();
Ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
Vous êtes vraiment proches. Au lieu d'utiliser
export default
, vous devez utiliserexport =
.personnalisé-typings/rivescript.d.ts
app.js
Pour plus d'informations sur comment écrire une déclaration des fichiers, vous devriez jeter un oeil à la Tapuscrit Manuel. Par exemple. ils ont un modèle pour l '" exportation des modules de classe.
import RiveScript = require('rivescript');
syntaxe ne ressemble pas à un valide ES6 instruction d'importation?import Rivescript from 'rivescript'
doit importer l'exportation par défaut de Rivescript. Cependant, il n'y a pas d'export par défaut: github.com/aichaos/rivescript-js/blob/master/src/.... Pour un aperçu complet: github.com/Microsoft/TypeScript/issues/2242import Rivescript from 'rivescript'
fonctionne très bien et les importations d'exportation par défaut, au moins avec la dernière Tapuscrit 3.3 que j'utilise.Accepté de répondre fonctionne bien pour cette question. Mais je veux vous donner une autre idée
si vous voulez s'étend catégorie, ajouter de la dynamique de la méthode de la classe au moment de l'exécution.
vous pouvez essayer (src/plugins/processeur.ts)
dans mon
server.ts
(src/serveur.ts),ma exportation par défaut de la classe de signature
Parce que le Serveur est un
default export
, de sorte que vous pouvez changerserver
dansexport default interface server
pour tout nom de variable validepar exemple: