【发布时间】:2016-11-17 03:43:28
【问题描述】:
我正在使用 SailsJS 开发后端服务器。它基本上将所有模型助手服务以及我自己的服务注入到全局命名空间中。如果我能够为这些服务获得 Intellisense,我会受益匪浅。
我首先设置了 typings 并为 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。
我能够获得的唯一 Intellisense 支持是当我通过以下方式在每个文件中导入这些服务时:
import * as InternalParser from '../services/InternalParser';
或
var InternalParser = require('../services/InternalParser');
但这不使用 Typescript 的定义文件,只是给了我导出的属性。总体而言,结果并不理想。
我想知道如何让它正常工作。我查看了 node 和 lodash 的类型定义文件,它们也是这样做的:声明一个具有特定类型的变量/命名空间。但是,他们的定义在 Javascript 中有效,而我的则不行。如何正确处理?
【问题讨论】:
-
您是否尝试将您的
.d.ts包含在您的 package.json 中? -
如果有一天有人偶然发现了这个问题,那么完美的答案就在这里:stackoverflow.com/questions/46678663/…
标签: javascript typescript intellisense visual-studio-code typescript-typings