我认为这已经在某个地方得到解决,在某些时候,只是为了我的生活,我不记得了,所以这是我的问题:
我正在做一些将加载到现有应用程序中的javascript工作。这个应用程序有可用的功能,除了我想要实际使用的一些功能之外,我几乎不知道它的任何功能。所以,我想知道一个事实,即window.srslyUsefulFunction将可供我使用,我并不关心将其移植到打字稿定义中。
所以问题是如何在我自己的打字稿文件中使用window.srslyUsefulFunction而不为其创建定义?
示例:
class MyClass {
public MyMethod (id : string) : void {
// do something
var result = window.srslyUsefulFunction(id);
// do something (with the result)
}
}
答案 0 :(得分:14)
您可以将该函数添加到Window
界面,然后在TypeScript程序中使用它:
interface Window {
srslyUsefulFunction(id: number): void;
}
class MyClass {
doSomething() {
window.srslyUsefulFunction(1);
}
}
答案 1 :(得分:5)
我有简单的解决方法。
在index.html中
function playIntro() {
intro = new lib.intro();
onlinePlayer.contentContainer.addChild(intro);
stage.update();
}
在我的Main.ts中,我称之为:
private onClick(event): void {
if (window.hasOwnProperty('playIntro')) {
window['playIntro'].call();
}
}
所以...如果你想从全局范围调用“blind”js函数,只需使用window [“foo”]。call();
答案 2 :(得分:1)
检查功能是否存在。如果没有,请声明:
if(!window.hasOwnProperty('srslyUsefulFunction')
|| typeof window['srslyUsefulFunction'] !== "function"){
window['srslyUsefulFunction'] = function(){
console.log("You're only running a dummy implementation of srslyUsefulFunction here!");
};
}