0

これが私のシナリオです。複数のファイルにまたがるモジュール「mine」を定義しています。参照パス インクルードを使用してファイルをインクルードします。ただし、ファイルの 1 つでインポートを使用すると、内部モジュール内の名前が解決されなくなります。モジュール名を明示的に参照する必要があります..

a.ts:

module mine {
    export class A {
    }
}

e.ts: (私はこれを所有していません。通常は Web からダウンロードします)

declare module "ext" {
    export var xyz;
};

b.ts:

/// <reference path="a.ts" />
/// <reference path="e.ts" />
import ext = module("ext");
module mine {
    export class B extends A {
    }
}

「tsc --target ES5 b.ts」を使用して b.ts をコンパイルすると、次のエラーが発生します。

E:/Prem/src/redsnake/try/b.ts(5,27): Expected type
E:/Prem/src/redsnake/try/b.ts(5,27): Base type must be interface or class

ただし、b.ts のインポート ステートメントを削除すると、すべて正常に動作します。私の質問は、別の外部モジュールをインポートしながら内部モジュールを拡張するにはどうすればよいかということです。

説明のために e.ts を追加しましたが、技術的には、tsd を介して取得するか、Web からダウンロードした外部の typescript 定義ファイルから e.ts を取得できます。私が特に直面している問題は、node.js assert モジュールにあります。

4

1 に答える 1

4

これは TypeScript コンパイラのバグです。コードは問題ありません (または、少なくとも問題ないはずです)。この問題は 0.9 ブランチで修正されました。

于 2013-04-09T19:58:42.313 に答える