Установить глобальное объявление в JavaScript vscode - программирование

Установить глобальное объявление в JavaScript vscode

Я работаю над транспортером JavaScript, который, помимо прочего, также заменит некоторые функции и переменные при сборке.

Например, следующий файл (./src/my-module.js):

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

Будет скопирован и преобразован в (./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;
});

Некоторые из этих функций также могут возвращать результат. В этом случае я хотел бы иметь возможность объявлять типы параметров и результат функции без использования require. Можно ли иметь глобальный .d.ts определение в VSCode?

Пока что все, что я сделал, это добавил функции в глобальную переменную eslint чтобы не было ошибок.

4b9b3361

Ответ 1

Квитирование

Этот ответ был в основном вдохновлен ответом mootrichard, но так как его пришлось изменить, чтобы работать с моим проектом, я также добавляю этот ответ.

Решение

Если вы нажмете F12 в глобальной функции JavaScript (то есть eval), появится файл объявлений о наборе текста (lib.es5.d.ts), содержащий документацию JavaScript. Вы можете просто добавить любые дополнительные пространства имен или функцию в этот файл. Но вам нужно использовать declare, а не export.

Пример:

//... Other Global JavaScript Declarations

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

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

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

Ответ 2

Вы можете указать свой собственный путь к папке TypeScript в settings.json, где вы можете указать свои собственные файлы lib.*.d.ts, используя опцию typescript.tsdk.

{
  "typescript.tsdk": "node_modules/typescript/lib"
}

Ответ 3

Я не уверен, правильно ли я понял. Это проект Typescript? Если да, вы можете добавить следующее в ваш tsconfig.json:

{
  "compilerOptions": {
    "paths": {
      "*": [
        "src/types/*",
        "other/source/folders/here/*"
      ]
    },
    ...
  },
  ...
}

Затем вы можете добавить, .d.ts файлы .d.ts в папку src/types.

Дайте мне знать, если это ответ, который вы ищете.