8

この件に関連する多数の StackOverflow の質問がありますが、私が試みているものとまったく同じではないか、以前のバージョンの TypeScript に関するものです。

私はかなり大きな TypeScript プロジェクトに取り組んでおり、特定のモジュールがクラスごとに 1 つではなく、複数のファイルに分割されています。

0.8.0 では、これはうまくいきました。

//* driver.ts *//
/// <reference path="express.d.ts"/>
/// <reference path="a.ts"/>
/// <reference path="b.ts"/>

.

//* a.ts *//
/// <reference path="driver.ts"/>
module m {
  import express = module("express");

  export class a {
    A: m.b;
    A2: express.ServerResponse;
  }
}

.

//* b.ts *//
/// <reference path="driver.ts"/>
module m {
  export class b {
      B: number;
  }
}

0.8.1 では、エクスポート インポートトリックでa.tsを変更する必要がありました。

//* a.ts *//
/// <reference path="driver.ts"/>
module m {
  export import express = module("express");

  export class a {
    A: m.b;
    A2: express.ServerResponse;
  }
}

ただし、0.8.2 では、インポートをモジュール宣言内に含めることができなくなったため、a.tsは次のように変更されました。

//* a.ts *//
/// <reference path="driver.ts"/>
import express = module("express");
module m {

  export class a {
    A: m.b;
    A2: express.ServerResponse;
  }
}

a.tsはb.tsのモジュールの拡張子を認識しないため、エラーが発生します。

私が理解していること:

  • import文により、 a.tsが外部モジュールになっています。
  • a.tsのインポートを削除すると、a と b と私のモジュールをうまくマージできます。
  • インポートを require ステートメントに変更すると、express.d.tsの型定義が失われます

わからないこと:

  • すべてのモジュール ファイルを一緒にマージせずに、これを回避する方法は本当にありませんか?

これが他の場所で回答されている場合はお詫びします-そこにリンクしてください-しかし、他の同様の問題はどれもこれに明確に回答していないようです.

4

1 に答える 1

5

これが私があなたの状況を説明するものです。

あなたのモジュール...

モジュールにちなんでファイルに名前を付ける必要があるためa.ts、実際にはであるm.ts必要があり、次のようなものを含む必要があります...

import express = module('express');

export class a {
    A: b;
    A2: express.ServerResponse;
}

export class b {
    B: number;
}

referenceここではステートメントを使用しないでください。

nodejs でコードを実行している場合、コードを複数のファイルに分割することはできません。これは、ファイル自体がモジュールであるためimport m = module('m');ですm.js。. できることは、フォルダー構造でファイルを整理することです。

import x = module('m/x'); // m/x.js
import y = module('m/y'); // m/y.js
于 2013-02-12T17:03:18.060 に答える