web-dev-qa-db-fra.com

Définir une déclaration globale en JavaScript vscode

Je travaille sur un transpilateur JavaScript qui, à part d'autres choses, remplacera également certaines fonctions et variables lors de la construction.

Par exemple, le fichier suivant (./src/my-module.js):

defineModule("MyModule", function(exports) {
  return exports;
});

Sera copié et converti en (./build/my-module.js):

(function(global, factory) {
  "use strict";
  if (typeof exports !== "undefined" && typeof module !== "undefined") module.exports.MyModule = factory(exports.MyModule || {});
  else factory(global.MyModule = {});
})(this, function(exports) {
  return exports;
});

Certaines de ces fonctions peuvent également renvoyer un résultat. Dans ce cas, je voudrais pouvoir déclarer les types de paramètres et le résultat de la fonction sans utiliser require. Est-il possible d'avoir une définition globale .d.ts Dans VSCode?

Jusqu'à présent, tout ce que j'ai fait est d'ajouter les fonctions à la variable globale de eslint afin de ne pas avoir d'erreurs.

11
nick zoum

Reconnaissance

Cette réponse a été principalement inspirée par réponse de mootrichard , mais comme elle a dû être modifiée, pour travailler avec mon projet, j'ajoute également cette réponse.

Solution

Si vous appuyez sur F12 sur une fonction JavaScript globale (c'est-à-dire eval) un fichier de déclarations de saisie apparaîtra (lib.es5.d.ts), contenant la documentation JavaScript. Vous pouvez simplement ajouter des espaces de noms ou des fonctions supplémentaires à ce fichier. Mais vous devez utiliser declare et non export.

Exemple:

//... Other Global JavaScript Declarations

// JavaScript Number Interface
interface Number {
  //...
}

// JavaScript Date Interface
interface Date {
  //...
}

declare function ezDefine(moduleName: string, generator: *): void;
1
nick zoum