我最近开始从 PHP 切换到 Node.js,并且由于我是 Typescript 的 super 粉丝,所以我使用的是 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..
}
主要.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 时会出错?
最佳答案
因此,Ryan Cavanaugh 的更改确实解决了我的问题,但是以迂回的方式。我真正的问题完全如您所料:node.d.ts 被包含了不止一次(就像 express.d.ts 一样)。我的文件结构是这样的:
C:\Project
-node.d.ts
\public
-main.ts
\definitions
-node.d.ts
很自然地,在我的 main.ts 文件中,我包含了 definitions/node.d.ts。但是不知何故,node(或者可能是 tsc)自动包含了直接高于 main.ts 的 node.d.ts 文件。我不知道怎么回事,它仍然让我很困惑,但这就是问题所在。
关于node.js - 包含 node.d.ts 时出现 Typescript 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15753432/