如何使用 Intellisense 将节点模块导入 TypeScript?

How do I import node modules into TypeScript with Intellisense?

我正在尝试将节点模块 Q 导入到我的 TypeScript 项目中,并想让 Intellisense 100% 正常工作

这有效,但 q 设置为 any,这意味着没有智能感知。我还必须混合使用 Q 和 q,这会让人感到困惑。

/// <reference path="Scripts/typings/q/Q.d.ts" />

module example {

    // no intellisense on q
    var q = require('q');

    // we do get intellisense on deferred though
    var deferred: Q.Deferred<void> = q.defer();
}

我们不能这样做,因为 Q 是一个模块,所以 :Q 部分会导致错误。

/// <reference path="Scripts/typings/q/Q.d.ts" />

module example {

    // BAD: this doesn't work
    var q: Q = require('q');
}

文件结构:

Q is in /node_modules/q/
Q.d.ts is in /Scripts/typings/q/Q.d.ts

我正在使用 Visual Studio 2013 SP4 和 TypeScript 1.4

注意:我在堆栈上看到过类似的问题,但这些解决方案不适用于较新版本的打字稿。

var q: typeof Q = require('q');

或者,您可以将 require 调用移到 module 块之外并改用 `import:

import q = require('q');