node.js和async.js的typescript定义文件

node.js和async.js的typescript定义文件,node.js,asynchronous,typescript,Node.js,Asynchronous,Typescript,我正在尝试在async.d.ts中创建以下内容: interface AsyncIteratorCallback { (err?: string): void; } interface AsyncEachIterator<T>{ (item: T, callback: AsyncIteratorCallback): void;} declare module "async" { // Collections function each<T>(

我正在尝试在async.d.ts中创建以下内容:

interface AsyncIteratorCallback {
    (err?: string): void;
}
interface AsyncEachIterator<T>{ (item: T, callback: AsyncIteratorCallback): void;}

declare module "async" {


    // Collections
    function each<T>(arr: T[], iterator: AsyncEachIterator<T>, callback: AsyncIteratorCallback): void;
}
我得到类型(err:string)=>void”和“async”的调用签名。AsyncIteratorCallback不兼容:

更新:

我在Visual Studio 2012中尝试了此代码

interface test {
    (err:string):void
}

var a = (err: string) => { };
var b = (param: test) => { };
b(a);
它起作用了。显然,函数a实现了接口测试。 然后我将此代码更改为:

interface test {
    (err?:string):void
}

var a = (err: string) => { }; 
var b = (param: test) => { };
b(a);  // error, incompatible call signatures
现在该函数没有实现接口。解决方案是添加一个?函数参数也是如此。此代码再次起作用:

interface test {
    (err?:string):void
}

var a = (err?: string) => { }; 
var b = (param: test) => { };
b(a);  // error, incompatible call signatures
最后,我尝试了以下方法:

interface test {
    (err:string):void
}

var a = (err: string) => { };
var b = (param: test) => { };
b({ method:a });  // error, no overload of call
我已经想知道接口定义,因为我从未见过一个接口有一个没有名字的方法。似乎一个对象无法实现这个接口。即使此代码也不起作用:

b({ call: a });
解决方案


你应该加上这个?给你的lambda
(err?=>{}

它不是一个空对象,而是一个lambda。函数ano(item,cb){}。没错,我使用了VisualStudio并更新了我的答案
b({ call: a });