如果页面使用的是AMD,我会在window
上找到一些名为define
的旧版js模块,或者// foo/bar.js
(function (root, factory) {
if (typeof define === "function" && define.amd) {
define(factory);
} else {
root.foo = root.foo || {};
root.foo.bar = factory();
}
} (this, function () {
return {
baz: function () {
console.log("qux");
}
};
}));
。例如:
import bar = require("foo/bar");
我们正在尝试在未来的网页上开始使用TypeScript,但我在创建能够正确设置外部模块的定义文件时遇到问题。理想情况下,在TypeScript中,我希望能够 // foo/bar.d.ts
interface FooBar {
baz: () => void;
}
declare module foo {
export var bar: FooBar;
}
declare module "foo/bar" {
export = foo.bar; // Error: Could not find symbol 'bar'.
};
在看了jquery.d.ts如何做之后,我想出了:
export = foo.bar
但我在<amd-dependency />
上收到错误。目前我还没有声明外部模块并使用{{1}}来处理它。
答案 0 :(得分:1)
导出的项目可以声明为变量,并带有相应的类型注释。这是一个例子(虽然我不确定你想要导出什么)...
// foo/bar.d.ts
interface FooBar {
baz: () => void;
}
declare module foo {
export var bar: FooBar;
}
declare module "foo/bar" {
export = fb;
};
declare var fb: FooBar;
这会产生一个全局变量fb
并且还支持相同的事物&#34;通过"foo/bar"
导入。
如果您不打算将项目放在全局范围内,可以将变量放在模块中,如下所示:
// foo/bar.d.ts
interface FooBar {
baz: () => void;
}
declare module foo {
export var bar: FooBar;
}
declare module "foo/bar" {
var fb: FooBar;
export = fb;
}
示例调用代码...
import foo = require("foo/bar");
var x = foo.baz();