隐藏TypeScript“prelude”的导入

时间:2013-09-24 11:07:23

标签: import module typescript

如果我尝试定义一个与TypeScript自动导入的类型相同的类,例如

class Map {
}

然后我收到以下错误

error TS2000: Duplicate identifier 'Map'.

我想要做的是能够重命名或避免完全导入TypeScript库类Map,以便我可以使用相同的名称定义自己的类。

将我的Map放入一个模块中(根据下面的一个答案)有帮助,但我仍然无法通过不合格的名称(即通过导入)来引用它,尽管这次没有任何关于重复的名字;导入根本不做任何事情:

假设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.Map。否则编译器会抱怨我缺少一些泛型参数,因为它假设我的意思是TypeScript“prelude”中的Map类型。

我觉得我应该能够定义一个“本地”名称(通过显式声明,或通过导入),它隐藏了前奏中任何等价命名的定义;或者,我应该能够从前奏中手动禁用特定类型的导入(就像我在Haskell中一样)。

1 个答案:

答案 0 :(得分:2)

将你的课程放在一个模块中..

module SomeNamespace {
    class Map {
    }
}

这将使您的类与默认的Map类不同。