5

私は最近、PHP から Node.js に切り替え始めました。私は Typescript の大ファンなので、Typescript + Node.js を使用しています。スケールアップして実際にコードをビルドし始めたとき、サンプルのコンパイルは問題なく行われていました。しかし、私は問題に遭遇しました。私の .ts ファイルの 1 つで node.d.ts が (リファレンス doc コメントで) 参照されるたびに、Node.js の Typescript コンパイラは重複した定義について文句を言います。私の .ts ファイルの 2 つは、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 は初めてで、VS2012 ではなく tsc コンパイラを直接使用するのは初めてです。私は正確に何を間違っていますか?コンパイラは lib.d.ts のような node.d.ts を暗黙的にインクルードしますか? もしそうなら、search_request.ts をコンパイルするときにエラーが発生するのはなぜですか?

4

2 に答える 2

3

したがって、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 よりも 1 つ上の node.d.ts ファイルを自動的にインクルードしていました。どうすればいいのかわからず、いまだに混乱していますが、それが問題でした。

于 2013-04-02T15:33:37.433 に答える