我正在使用VSCode开发JavaScript项目.我正在使用UMD设计模式,而vscode intellisense无法识别来自另一个文件的模块的导出.我在一个名为的文件中添加了所有声明globals.d.ts.不幸的是我找不到globals.d.ts从JavaScript文件加载声明的方法.
export namespace ModuleName {
export interface Item {
toString(): string;
property: string;
name: string;
}
}
Run Code Online (Sandbox Code Playgroud)
(function (global, factory) {
"use strict";
if (typeof ModuleName === "undefined" && typeof require === "function") global.ModuleName = require("./mymodule.js");
if (typeof exports !== "undefined" && typeof module !== "undefined") factory(exports);
else factory(global.OtherModule = global.OtherModule || {});
})(this, (function (exports) {
"use strict";
function myMethod() {
}
exports.myMethod = myMethod;
return exports;
}));
Run Code Online (Sandbox Code Playgroud)
我正在使用SailsJS开发后端服务器.它基本上将所有模型助手服务以及我自己的服务注入全局命名空间.如果我能够获得这些服务的Intellisense,那将对我有很大帮助.
我首先为lodash和node 设置了typings并安装了全局类型定义.在创建jsconfig.json和tsconfig.json文件之后,它就像一个魅力.
接下来,我想为自己的服务创建一个基本定义文件.我在typings / globals中创建了一个目录,其中包含一个index.d.ts文件:
declare namespace foo {
export function bar();
}
declare var baz: { some: number };
Run Code Online (Sandbox Code Playgroud)
这只是为了确保我不浪费时间编写定义,如果它们不起作用.
接下来,我通过添加引用标记在typings / index.d.ts中包含index.d.ts文件:
/// <reference path="globals/psiewakacje/index.d.ts" />
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,它在我的项目的Javascript文件中不起作用.在打字foo.或baz.我没有得到任何明智的智能感知.
我能够获得的唯一的Intellisense支持是当我通过以下方式在每个文件中导入这些服务时:
import * as InternalParser from '../services/InternalParser';
Run Code Online (Sandbox Code Playgroud)
要么
var InternalParser = require('../services/InternalParser');
Run Code Online (Sandbox Code Playgroud)
但这不使用Typescript的定义文件,只是给我导出的属性.总的来说,这是一个不理想
我想知道如何让它正常工作.我查看了node和lodash的类型定义文件,他们也这样做:声明一个具有特定类型的变量/命名空间.但是,他们的定义适用于Javascript,而我的定义则不然.怎么做对吗?
javascript intellisense typescript visual-studio-code typescript-typings