我正在使用 SailsJS 开发后端服务器。它基本上将所有模型助手服务以及我自己的服务注入到全局命名空间中。如果我能够为这些服务获得 Intellisense,我将受益匪浅。
我首先为 lodash 和 node 设置了类型并安装了全局类型定义。创建jsconfig.json和tsconfig.json文件后,它就像一个魅力。
接下来,我想为我自己的服务创建一个基本定义文件。我在typings /globals中创建了一个目录,其中包含一个index.d.ts文件:
declare namespace foo {
export function bar();
}
declare var baz: { some: number };
这只是为了确保如果定义不起作用,我不会浪费时间编写定义。
接下来,我通过添加引用标记将该index.d.ts文件包含在 typings /index.d.ts中:
/// <reference path="globals/psiewakacje/index.d.ts" />
令我惊讶的是,它在我项目的 Javascript 文件中不起作用。打字foo.
或baz.
我没有得到任何明智的智能感知。
我能够获得的唯一 Intellisense 支持是当我通过以下方式在每个文件中导入这些服务时:
import * as InternalParser from '../services/InternalParser';
或者
var InternalParser = require('../services/InternalParser');
但这不使用 Typescript 的定义文件,只是给了我导出的属性。总的来说是一个不理想的结果。
我想知道如何让它正常工作。我查看了 node 和 lodash 的类型定义文件,它们也是这样做的:声明一个具有特定类型的变量/命名空间。但是,他们的定义在 Javascript 中有效,而我的则不行。如何正确处理?