我正在尝试使用async的filter函数,该函数来自v1.5.2的文档(默认情况下,如果你npm i async
得到的那个),只需要一个迭代器中回调的(boolean)值:
iterator(item,callback) - 应用于arr中每个项目的真值测试。迭代器传递一个回调(truthValue),一旦完成就必须用一个布尔参数调用。
我检查了the code,这个版本也是如此。
问题是正在为异步v2工作的候选版本似乎改变了它以采取通常的(错误,值)回调。后一个定义是DefinitelyTyped中的async类型定义所使用的:
interface AsyncBooleanIterator<T> { (item: T, callback: (err: string, truthValue: boolean) => void): void; }
// ...
filter<T>(arr: T[], iterator: AsyncBooleanIterator<T>, callback?: AsyncResultArrayCallback<T>): any;
现在发生了什么?我无法发布PR,因为当前的类型定义是异步的未来。但是我使用async得到了一个错误,我想对于v1.5.2。我可以访问DefinitelyTyped类型defs的不同版本吗?
我开始使用Typescript并听说过一些叫做合并的东西。显然,可以将AsyncBooleanIterator
的定义扩展为也可以使用单个布尔参数进行回调的定义...但我不确定如何执行此操作。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用以前的版本之一 - 查看历史记录并选择适当的提交 如果您想手动允许两个回调签名,您可以执行以下操作:
interface AsyncBooleanIterator<T> {
(item: T, callback: ((truthValue: boolean) => void) | ((err:string,truthValue:boolean) => void)): void;
}