我最近开始从 PHP 切换到 Node.js,因为我是 Typescript 的忠实粉丝,所以我使用的是 Typescript + Node.js。当我开始扩大规模并真正构建我的代码时,我的示例编译得很好。但后来我遇到了一个问题。每当在我的一个 .ts 文件中引用 node.d.ts(带有参考文档注释)时,Node.js 中的 Typescript 编译器都会抱怨重复定义。我的两个 .ts 文件抱怨没有 node.d.ts 定义,但我的 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..
}
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);
如果我添加<reference path="node.d.ts" />
到 search_request.ts 的顶部,它编译得很好。如果我删除它,我会收到有关缺少定义的警告。但是,如果我将它包含在任一文件中,编译 main.ts 会给我数百条关于重复标识符的警告。
我不是 Typescript 的新手,但我是 Node.js 的新手,并且是直接使用 tsc 编译器而不是通过 VS2012 的新手。我到底做错了什么?编译器是否像 lib.d.ts 一样隐式包含 node.d.ts?如果是这样,为什么我在编译 search_request.ts 时会出错?