TypeScript错误:Type';无效';不可分配给类型';布尔值';
我有一个打字脚本错误: 类型为“(element:Conversation)=>void”的参数不能分配给类型为“(值:Conversations,索引:number,obj:Conversation[])=>boolean”的参数。类型“void”不可分配给类型“boolean” 这是我的模式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
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:对话[]
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
});