0

TypeScript によって自動的にインポートされる型と同じ名前のクラスを定義しようとすると、

class Map {
}

次に、次のエラーが表示されます

error TS2000: Duplicate identifier 'Map'.

私がしたいのは、名前を変更できるようにするか、TypeScript ライブラリ クラスを完全にインポートしないようにしMapて、同じ名前で自分自身を定義できるようにすることです。

myMapをモジュールに入れると(以下の回答の1つに従って)役立ちますが、非修飾名で(つまり、インポートによって)参照することはできませんが、今回は名前の重複についての苦情はありません。インポートは単に何もしません:

以下A.tsが含まれているとします。

module A {
   export class Map {
   }
}

含まれるものB.ts:

/// <reference path='A.ts'/>

import Map = A.Map

function test (m: Map) {
}

これをコンパイルするには、に置き換える必要がありm: Mapますm: A.MapMapそれ以外の場合、コンパイラは、TypeScript の「プレリュード」からの型を意味すると想定しているため、いくつかのジェネリック引数が欠落していると不平を言います。

プレリュードで同等の名前の定義を隠す「ローカル」名を(明示的な宣言またはインポートを介して)定義できるはずだと思います。または、プレリュードからの特定の型のインポートを手動で無効にできるはずです (Haskell でできるように)。

4

1 に答える 1

2

クラスをモジュール内に配置します。

module SomeNamespace {
    class Map {
    }
}

これにより、クラスがデフォルトの Map クラスから一意になります。

于 2013-09-24T11:13:05.933 に答える