如何在打字稿中“返回”函数定义之外

时间:2015-03-02 13:37:37

标签: javascript typescript userscripts tampermonkey

  1. 我需要在打字稿上重写我的tampermonkey脚本。

  2. 在打字稿上重写这个javascript的正确方法是什么?

    if (window.top != window.self ) {
        return;
    }
    
  3. 如果脚本不在window.top中运行,则主要目标是停止执行脚本。

    Typescript编译器写入ERROR TS1108:A' return'语句只能在函数体中使用。

3 个答案:

答案 0 :(得分:2)

我将如何做到这一点。打字稿转换成Javascript,但它不是Javascript。

if(validateIfTop()){

    // MAIN BODY OF YOUR USERSCRIPT GOES HERE

}

validateIfTop():boolean{
    return window.top === window.self;
}

这应该可以解决当前的转发错误。但是,您运行良好的代码可能是当前状态。只是从主脚本中返回一个值是没有意义的。您可能希望查看此问题:Is it possible to stop JavaScript execution?它解释了如何停止javascript脚本。

答案 1 :(得分:0)

我怀疑你的原始JS函数只是巧妙地运行,即它在运行时无声地失败:

enter image description here

我会重构代码,使其被大卫已经建议的if块包围。

答案 2 :(得分:-3)

你不能返回外部函数,但是使用throw Exception你也可以停止执行userscipts(tampermonkey):

if (window.top != window.self) {
    throw new Error("Not on top");
}