void' 不可分配给类型为 '(value: User[], index: number) => boolean' 的参数
Posted
技术标签:
【中文标题】void\' 不可分配给类型为 \'(value: User[], index: number) => boolean\' 的参数【英文标题】:void' is not assignable to parameter of type '(value: User[], index: number) => boolean'void' 不可分配给类型为 '(value: User[], index: number) => boolean' 的参数 【发布时间】:2017-07-29 09:32:34 【问题描述】:我有一个名为 User
的模型,并且我的服务中有一个名为 getUsers
的观察者,它可以获取一堆 JSON 对象。
在我的组件中,我有以下内容
@Input() users: User[] = [];
我并尝试像这样使用它:
getUserByLastName(lastName)
this._searchService.getUsers()
.filter(users =>
for(let user of users)
if(user.lastName == lastName)
this.users.push(user);
)
.subscribe(users => this.users = users,
error =>this.errorMessage =<any> error);
return this.users;
但是.filter(users =>
这行给了我一个错误提示:
Argument of type '(users: User[]) => void' is not assignable to
parameter of type '(value: User[], index: number) => boolean'. Type
'void' is not assignable to type 'boolean
我稍后尝试使用它来初始化变量,以便将其填充到不同的表单中。
case "lastName":
this.users = this.getUserByLastName(this.lastName);
如果这令人困惑,我有两页。一个是隐藏的,直到在默认页面中单击一行。一个表单位于另一个(隐藏的)表单中,该表单为在表单中选择要编辑的用户(行)填充数据。
【问题讨论】:
【参考方案1】:我假设你可以有不同的术语来过滤。如果不是,您已经可以将姓氏传递给服务进行过滤,但如果您想在组件中进行过滤,请执行以下操作。如果您需要返回过滤后的数据,看起来,返回它,在你需要它的地方,订阅。所以:
getUserByLastName(lastName)
return this._searchService.getUsers()
.map(data =>
return data.filter((x: any) => x.lastName == lastName);
)
在需要的地方订阅:
this.getUserByLastName(this.lastName)
.subscribe(data =>
this.users = data;
);
【讨论】:
【参考方案2】:这可以使用lodash 轻松实现,如下所示
users =<User[]> _.pullAllWith(users,lastName : 'yourparameter', _.isEqual);
【讨论】:
以上是关于void' 不可分配给类型为 '(value: User[], index: number) => boolean' 的参数的主要内容,如果未能解决你的问题,请参考以下文章
类型 '() => void' 不可分配给类型 '() => '
分页 - 类型“void”不可分配给类型“PageEvent”
使用反应成帧器类型'()=> void'的打字稿错误不可分配给类型'未定义'
React 错误:类型“void”不可分配给 React.Component 中的类型“Readonly<>”
如何修复类型 'AsymmetricMatcher<any>' 不可分配给类型 '() => void'。在茉莉花/开玩笑