在另一个函数中使用 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 时,“重载签名必须都是环境或非环境”的主要内容,如果未能解决你的问题,请参考以下文章