在另一个函数中使用 setTimeout 时,“重载签名必须都是环境或非环境”

Posted

技术标签:

【中文标题】在另一个函数中使用 setTimeout 时,“重载签名必须都是环境或非环境”【英文标题】:"Overload signatures must all be ambient or non-ambient" when using setTimeout in another function 【发布时间】:2015-11-29 22:31:07 【问题描述】:

我有一个 setTimeout 回调,但是当我把它放在另一个函数中时,tsc 出现错误:

function delayedSnapshot() 

    setTimeout( function() 
        var filename = "/Users/dc/dump/heapdump.heapsnapshot";
        heapdump.writeSnapshot(function(err, filename) 
          console.log("dump written to", filename);
        );
        process.exit(1);

    , 5000);



>> error TS2384: Overload signatures must all be ambient or non-ambient.

如果我删除外包装delayedSnapshot,它会编译得很好。 我在这里找到了一些关于环境意味着什么的东西,但它似乎并不相关。

http://www.typescriptlang.org/Handbook#modules-working-with-other-javascript-libraries

有人可以解释我如何阻止此错误的发生,但仍让我的包装器控制回调触发吗?

【问题讨论】:

我无法重现该错误,而且对我来说一切都很好。这就是所有的代码吗? 【参考方案1】:

将函数名称从 delayedSnapshot() 更改为其他名称。

似乎在其他地方定义/声明了一个delayedSnapshot() 方法,这里被重载了。

【讨论】:

我现在无法检查,但这似乎是一个合理的答案。

以上是关于在另一个函数中使用 setTimeout 时,“重载签名必须都是环境或非环境”的主要内容,如果未能解决你的问题,请参考以下文章

在另一个页面中重定向时php会话不起作用[重复]

在AngularJS中停止setTimeout函数(提示:使用$ timeout)

搜狗输入法文件重命名说在另一个文件打开改不了

如何在另一个页面获取数组详细信息

setTimeout与Promise的区别

Font Awesome setTimeout函数无法动画(Javascript)