【发布时间】:2014-09-23 03:15:39
【问题描述】:
这和这个问题有关:Can I import a TypeScript class from my own module to global?
我已经制作了一个模块,我想将一个类公开给全局范围。
module Foo {
export class Bar {
x: number
}
/* Some more interfaces and classes to be used only in this module */
}
一开始我做了一个接口,定义了一个新的变量来实现这个。
interface Bar extends Foo.Bar {
}
var Bar = Foo.Bar;
生成的 JavaScript 将我的 Bar 作为变量。
var Foo;
(function (Foo) {
var Bar = (function () {
function Bar() {
}
return Bar;
})();
Foo.Bar = Bar;
})(Foo || (Foo = {}));
var Bar = Foo.Bar;
//# sourceMappingURL=app.js.map
d.ts 文件包含我的全局 Bar 接口和变量。
declare module Foo {
class Bar {
public x: number;
}
}
interface Bar extends Foo.Bar {
}
declare var Bar: typeof Foo.Bar;
然后,我注意到我可以简单地使用 import 来公开我的类,我就这样做了。
import Bar = Foo.Bar;
生成的 JavaScript 文件完全相同。
var Foo;
(function (Foo) {
var Bar = (function () {
function Bar() {
}
return Bar;
})();
Foo.Bar = Bar;
})(Foo || (Foo = {}));
var Bar = Foo.Bar;
//# sourceMappingURL=app.js.map
但是,我的 d.ts 文件现在不包含有关全局 Bar 的任何信息。
declare module Foo {
class Bar {
public x: number;
}
}
这是预期的结果吗?我认为这会导致错误,因为当我在其他项目中包含 JavaScript 文件和 d.ts 文件时,它允许声明具有相同名称的变量。
【问题讨论】:
标签: typescript