包含node.d.ts时的Typescript编译器错误

GJK*_*GJK 5 node.js typescript tsc

我最近开始将表单PHP切换到Node.js,因为我是一个巨大的Typescript粉丝,我正在使用Typescript + Node.js. 当我开始扩展并真正构建我的代码时,我的样本编译得很好.但后来我遇到了一个问题.每当我的一个.ts文件中引用node.d.ts(带有引用doc注释)时,Node.js中的Typescript编译器就会抱怨重复的定义.我的两个.ts文件抱怨没有node.d.ts definitons,但我的main.js文件没有.(下面的文件:)

search_request.ts

/// <reference path="definitions/mustache.d.ts" />

import url = module("url");
import mu = module("mu2");

export function handler(request, response) {
    //code..
}
Run Code Online (Sandbox Code Playgroud)

main.ts

/// <reference path="servers/search_request.ts" />

import search_request = module("./servers/search_request");
import express = module("express");

var app = express();

app.get("/search.html", search_request.handler);
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

如果我添加<reference path="node.d.ts" />到search_request.ts的顶部,它编译得很好.如果我将其删除,我会收到有关缺少定义的警告.但是,如果我将它包含在任一文件中,编译main.ts将为我提供数百个关于重复标识符的警告.

我对Typescript不是新手,但我是Node.js的新手,而不是直接使用tsc编译器而不是通过VS2012.我究竟做错了什么?编译器是否隐式包含像lib.d.ts这样的node.d.ts?如果是这样,为什么我在编译search_request.ts时会出错?

GJK*_*GJK 3

所以 Ryan Cavanaugh 的改变确实解决了我的问题,但是以一种迂回的方式。我真正的问题正如您所期望的那样:node.d.ts 被多次包含(就像express.d.ts 一样)。我的文件结构是这样的:

C:\Project
   -node.d.ts
   \public
      -main.ts
      \definitions
         -node.d.ts
Run Code Online (Sandbox Code Playgroud)

因此,很自然地,在我的 main.ts 文件中,我包含了Definitions/node.d.ts。但不知何故,node(或者可能是 tsc)自动包含了直接高于 main.ts 的 node.d.ts 文件。我不知道怎么办,这仍然让我很困惑,但这就是问题所在。