Import 从TypeScript“隐藏导入”;前奏曲;
如果我试图定义一个与TypeScript自动导入的类型同名的类,例如Import 从TypeScript“隐藏导入”;前奏曲;,import,module,typescript,Import,Module,Typescript,如果我试图定义一个与TypeScript自动导入的类型同名的类,例如 class Map { } 然后我得到以下错误 error TS2000: Duplicate identifier 'Map'. 我想做的是能够重命名或避免完全导入TypeScript库类Map,这样我就可以用相同的名称定义自己的类 将我的Map放在一个模块中(根据下面的一个答案)会有所帮助,但我仍然不能通过非限定名称(即通过导入)来引用它,尽管这次没有关于重复名称的投诉;导入根本不起任何作用: 假设A.ts包含: mo
class Map {
}
然后我得到以下错误
error TS2000: Duplicate identifier 'Map'.
我想做的是能够重命名或避免完全导入TypeScript库类Map
,这样我就可以用相同的名称定义自己的类
将我的Map
放在一个模块中(根据下面的一个答案)会有所帮助,但我仍然不能通过非限定名称(即通过导入)来引用它,尽管这次没有关于重复名称的投诉;导入根本不起任何作用:
假设A.ts
包含:
module A {
export class Map {
}
}
/// <reference path='A.ts'/>
import Map = A.Map
function test (m: Map) {
}
和B.ts
包含:
module A {
export class Map {
}
}
/// <reference path='A.ts'/>
import Map = A.Map
function test (m: Map) {
}
//
导入映射=A.Map
功能测试(m:Map){
}
为了进行编译,我需要将m:Map
替换为m:A.Map
。否则编译器会抱怨我缺少一些泛型参数,因为它假定我指的是TypeScript“prelude”中的Map
类型
我觉得我应该能够定义一个“本地”名称(通过一个显式声明,或通过一个导入),它隐藏了前奏中任何等价命名的定义;或者,我应该能够手动禁用从prelude导入特定类型(正如我在Haskell中所做的那样)。将类放入模块中
module SomeNamespace {
class Map {
}
}
这将使您的类与默认映射类不同 很好的答案+1,我想提到的是,对于
或避免完全导入,TypeScript库类映射
有一个编译器标志,用--noLib
编译器标志排除lib.d.ts
中的所有内容,然后使用自定义的lib.d.ts
。但是我建议你不要使用它,并且像你提到的那样解决它,让生活变得简单:)谢谢。这是可行的,但不幸的是,我不能用非限定名称引用我的映射。相应地更新了我的问题。然而,如果没有办法,我想我会接受这个答案。(@basarat的建议有点过激:)也许是这样?