在vscode JavaScript中设置全局声明

时间:2019-07-03 09:20:17

标签: javascript visual-studio-code typescript-typings

我正在开发一个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的情况下声明参数的类型和函数的结果。 VSCode是否可以有一个全局.d.ts定义?

到目前为止,我所做的就是将函数添加到eslint的全局变量中,以免出错。

2 个答案:

答案 0 :(得分:5)

您可以在settings.json中指定自己的TypeScript文件夹路径,在其中可以使用*.d.ts选项指定自己的typescript.tsdk文件。

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

答案 1 :(得分:1)

致谢

此答案主要是受mootrichard's answer的启发,但是由于必须对其进行修改才能与我的项目一起使用,因此我还要添加此答案。

解决方案

如果您在全局JavaScript函数(即eval)上按 F12 ,则会显示一个包含JavaScript文档的键入声明文件(lib.es5.d.ts)。您可以只向该文件添加任何其他名称空间或函数。但是您需要使用declare而不是export

示例:

//... Other Global JavaScript Declarations

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

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

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