我以这种方式使用JavaScript模块
myJSModule.js
var myJSModule = function () {
var _public_ = {};
_public_.foo = function () {
}
return _public_;
}();
现在我需要在TypeScript
中的函数中调用它myTypeScript.ts
namespace Custom {
export function foo111() {
myJSModule.foo(); // error: "Symbol myModule can't be properly resolved"
}
}
在 myJSModule 中调用foo的正确方法是什么?
答案 0 :(得分:2)
最好的方法是使用ambient declaration。您可以在TypeScript文件中进行环境声明,但如果将它们放在单独的.d.ts
文件中,则通常更容易管理。
在您的情况下,您可以添加名为myJSModule.d.ts
的文件:
declare var myJSModule: {
foo(): void;
}
这将告诉编译器myJSModule
存在,并且具有所描述的类型。
答案 1 :(得分:1)
感谢@Jared Smith的评论
,这是一个可能的解决方案我可以将窗口对象转换为任何,因此我不需要声明接口。
<强> myTypeScript.ts 强>
namespace Custom {
export function foo111() {
(<any>window).myJSModule.foo();
}
}
答案 2 :(得分:0)
您可以声明模块
declare const myJSModule : any;
namespace Custom {
export function foo111() {
myJSModule.foo();
}
}
如果您有JS模块的定义文件,您也可以将其添加到您的ts配置中。