node.js和async.js的typescript定义文件
我正在尝试在async.d.ts中创建以下内容: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>(
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 });