当DefinitelyTyped类型定义用于比我想要的更新版本时该怎么办?

时间:2016-06-20 17:33:51

标签: typescript definitelytyped

我正在尝试使用asyncfilter函数,该函数来自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的定义扩展为也可以使用单个布尔参数进行回调的定义...但我不确定如何执行此操作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用以前的版本之一 - 查看历史记录并选择适当的提交 如果您想手动允许两个回调签名,您可以执行以下操作:

interface AsyncBooleanIterator<T> {
    (item: T, callback: ((truthValue: boolean) => void) | ((err:string,truthValue:boolean) => void)): void;
}