回调函数上的Typescript错误:类型'Function'不提供签名匹配

dan*_*dan 3 typescript

我是一个错误,类型'功能'提供不匹配下面的过滤器的签名.这是真的,因为过滤器需要特定类型.如何定义我的回调以匹配过滤器所期望的?

private _getItemFilteredBy(itemName: string, Fn: Function): Observable<any[]> {
    return this.getItemByName(itemName)
        .map((items: any[]) => {
            return items.filter( Fn );
        });
}
Run Code Online (Sandbox Code Playgroud)

Paa*_*rth 6

过滤器需要一个谓词.将类型更改为(x:any) => boolean

private _getItemFilteredBy(itemName: string, Fn: (x:any) => boolean): Observable<any[]> {
    return this.getItemByName(itemName)
        .map((items: any[]) => {
            return items.filter( Fn );
        });
}
Run Code Online (Sandbox Code Playgroud)

如果您有比"任何"更具体的类型信息,我建议您更新,但我上面发布的内容应该有效.