我将通过说我使用Intellij IDEA来解释这个问题。
关注此问题:If external typescript modules don't have a module name, how do you avoid naming conflicts?
这一切都很好,但是我们说我在两个Rectangle.ts文件中有两个Rectangle类,但是在不同的包中,比如src/utils/geom
和src/utils/ui
或类似的东西。
src/utils/geom/Rectangle.ts
以calculateSurface()
为唯一方法,src/utils/ui/Rectangle.ts
以display()
为唯一方法。
现在如果我在一个文件中调用它们,我会在类型提示中获得两种方法作为可能的调用。
import GeomRectangle = require();
import UiRectangle = require();
var geom: GeomRectangle = new GeomRectangle();
var ui: UiRectangle = new UiRectangle();
// Now both those are valid
ui.calculateSurface();
ui.display();
我正在思考它,因为我的两个Rectangle.ts文件都有一个exports = Rectangle
,因为这是该类的名称,而Intellij IDEA必须使用此出口声明用于确定它对您的建议。
我的假设错了吗?有没有什么方法可以让类型提示在使用外部模块时不会自行绊倒,有时候,这些类的名称彼此相同?
答案 0 :(得分:1)
我在Visual Studio中尝试了您的代码:
的geom / Rectangle.ts
class Rectangle {
calculateSurface() {
console.log("a");
}
}
export = Rectangle;
UI / Rectangle.ts
class Rectangle {
display() {
console.log("b");
}
}
export = Rectangle;
Test.ts
import GeomRectangle = require("./geom/Rectangle");
import UiRectangle = require("./ui/Rectangle");
var x: GeomRectangle = new GeomRectangle();
var ui: UiRectangle = new UiRectangle();
// Now both those are valid
ui.calculateSurface(); // compilation error here
ui.display();
calculateSurface
对象的intellisense选项中没有ui
方法。ui.calculateSurface()
行所以它可能与Intellij IDEA
或配置问题有关。