我有一个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 次  |  
        
|   最近记录:  |