如果我尝试定义一个与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中一样)。
答案 0 :(得分:2)
将你的课程放在一个模块中..
module SomeNamespace {
class Map {
}
}
这将使您的类与默认的Map类不同。