我有一个TypeScript错误:
类型'(element:Conversation)=> void'的参数不能分配给类型'的参数(值:Conversations,index:number,obj:Conversation [])=> boolean'.类型'void'不能分配给'boolean'类型.
这是我的架构
export class Conversation {
constructor(
public id: number,
public dateTime: Date,
public image: string,
public isUnread: boolean,
public title: string
) {}
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
// Mark as read also in data store
this.dataStore.data.find((element) => {
if (element.id === conversationId) {
element.isUnread = true;
// Push the updated list of conversations into the observable stream
this.observer.next(this.dataStore.data);
}
});
Run Code Online (Sandbox Code Playgroud)
这个错误意味着什么?提前谢谢你.
Joh*_*isz 20
这意味着您传递给的回调函数this.dataStore.data.find应该返回一个布尔值并且有3个参数,其中两个参数可以是可选的:
但是,您的回调函数不会返回任何内容(返回void).您应该使用正确的返回值传递回调函数:
this.dataStore.data.find((element, index, obj) => {
// ...
return true; // or false
});
Run Code Online (Sandbox Code Playgroud)
要么:
this.dataStore.data.find(element => {
// ...
return true; // or false
});
Run Code Online (Sandbox Code Playgroud)
理由是这样的:传递给find方法的函数称为谓词.这里的谓词根据函数本身定义的条件定义布尔结果,以便该find方法可以确定要查找的值.
实际上,这意味着为每个项目调用谓词data,并且data谓词返回的第一个项目是返回true的值find.
您的代码正在将函数作为参数传递给find。该函数接受一个element参数(类型Conversation)并返回void(表示没有返回值)。TypeScript将其描述为(element: Conversation) => void'
TypeScript的意思是该find函数不希望接收接受对话并返回void的函数。它期望一个函数接受a Conversations,a number和一个Conversation数组,并且该函数应返回a boolean。
因此,最重要的是您要么需要更改代码以find正确地传递值,要么需要find在接受a Conversation并返回的定义文件中为定义提供重载void。
| 归档时间: |
|
| 查看次数: |
69035 次 |
| 最近记录: |