TypeScript错误:Type';无效';不可分配给类型';布尔值';

TypeScript错误:Type';无效';不可分配给类型';布尔值';,typescript,Typescript,我有一个打字脚本错误: 类型为“(element:Conversation)=>void”的参数不能分配给类型为“(值:Conversations,索引:number,obj:Conversation[])=>boolean”的参数。类型“void”不可分配给类型“boolean” 这是我的模式 export class Conversation { constructor( public id: number, public dateTime: Date, publ

我有一个打字脚本错误:

类型为“(element:Conversation)=>void”的参数不能分配给类型为“(值:Conversations,索引: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
  ) {}
}
这是我的密码

// 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);
  }
});

这个错误意味着什么?提前感谢。

您的代码正在将一个函数作为参数传递给
find
。该函数接受
元素
参数(类型为
Conversation
),并返回
void
(表示没有返回值)。TypeScript将其描述为
(元素:对话)=>void'

TypeScript所说的是,
find
函数不希望收到一个接受对话并返回void的函数。它需要一个接受
对话
、一个
数字
和一个
对话
数组的函数,并且该函数应该返回一个
布尔值


因此,底线是您需要更改代码以正确地将值传递给
find
,或者,您需要在定义文件中为
find
的定义提供重载,该定义文件接受
对话
并返回
void

,这意味着传递给
this.dataStore.data.find
的回调函数应返回一个布尔值,并具有3个参数,其中两个可以是可选的:

  • 价值观:对话
  • 索引:编号
  • obj:对话[]
但是,回调函数不返回任何内容(返回void)。应传递具有正确返回值的回调函数:

this.dataStore.data.find((element, index, obj) => {
    // ...

    return true; // or false
});
或:

这样做的原因:传递给
find
方法的函数称为谓词。这里的谓词根据函数本身中定义的条件定义布尔结果,以便
find
方法可以确定要查找的值

实际上,这意味着为
data
中的每个项目调用谓词,谓词返回
true
data
中的第一个项目是
find
返回的值

this.dataStore.data.find(element => {
    // ...

    return true; // or false
});