Dattiloscritto di errore: Tipo ‘void’ non è assegnabile al tipo ‘boolean’

Sto avendo un Dattiloscritto di errore:

Argomento di tipo ‘(elemento: Conversazione) => void ” non è assegnabile al parametro di tipo ‘(valore: Conversazioni, indice: numero, obj: Conversazione[]) => boolean’. Tipo ‘void’ non è assegnabile al tipo ‘boolean’.

Questo è il mio schema

export class Conversation {
  constructor(
    public id: number,
    public dateTime: Date,
    public image: string,
    public isUnread: boolean,
    public title: string
  ) {}
}

e questo è il mio codice

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

Che cosa significa questo errore? Grazie in anticipo.

InformationsquelleAutor be-codified | 2016-03-09

2 Replies
  1. 15

    Significa che la funzione di callback è passato a this.dataStore.data.find dovrebbe restituire un valore booleano e sono 3 parametri, di cui due possono essere facoltativi:

    • valore: Conversazioni
    • indice: numero
    • obj: Conversazione[]

    Tuttavia, la funzione di callback non restituisce nulla (restituisce void). Si dovrebbe passare una funzione di callback con il corretto valore di ritorno:

    this.dataStore.data.find((element, index, obj) => {
        //...
    
        return true; //or false
    });

    o:

    this.dataStore.data.find(element => {
        //...
    
        return true; //or false
    });

    Motivo per cui è così: la funzione si passa alla find metodo viene chiamato un predicato. Il predicato qui definisce un boolean risultato in base alle condizioni definite nella funzione stessa, in modo che il find metodo può determinare per quale valore di trovare.

    In pratica, questo significa che il predicato viene chiamato per ogni elemento in data, e la prima voce in data per cui il predicato restituisce true è il valore restituito dalla find.

    InformationsquelleAutor John Weisz

  2. 4

    Il tuo codice è un passaggio di una funzione come argomento find. Tale funzione prende un element argomento (di tipo Conversation) e restituisce void (cioè non vi è alcun valore di ritorno). Dattiloscritto descrive questo come (element: Conversation) => void'

    Cosa Dattiloscritto dire è che il find funzione non si aspetta di ricevere una funzione che prende una Conversazione e non restituisce nulla. Si aspetta una funzione che prende un Conversations, un number e un Conversation array, e che questa funzione deve restituire un boolean.

    Così la linea di fondo è che è necessario modificare il codice per passare i valori di find correttamente, o altro, è necessario fornire un sovraccarico per la definizione di find nel file di definizione che accetta un Conversation e restituisce void.

    InformationsquelleAutor NYCdotNet

Lascia un commento