8

Quando uso Collection2 nel progetto angular2-meteora, questi tipi di codici da demo sempre danno avvertendomi nel terminale:tipo non meglio comune esiste tra le espressioni di ritorno

tipo No meglio comune esiste tra le espressioni di ritorno.

Come posso migliorare i codici? Grazie

{ 
    createdAt: { 
    type: Date, 
    autoValue: function() { 
     if (this.isInsert) { 
     return new Date(); 
     } else if (this.isUpsert) { 
     return {$setOnInsert: new Date()}; 
     } else { 
     this.unset(); 
     } 
    } 
    } 
} 
+0

Si sta dicendo esattamente quale sia l'errore. Stai restituendo una data, un oggetto e tutto ciò che viene restituito da this.unset() (probabilmente nulla, sembra un vuoto). Quindi hai assolutamente ZERO tipi di ritorno comuni. Scegli un tipo e restituiscilo in modo coerente. –

+0

@DavidL grazie, ho provato ad aggiungere un 'return undefined;' dopo 'this.unset();', ma mi dà comunque l'avviso. –

+0

La funzione 'autoValue' non ha il tipo di ritorno appropriato e anche' this.unsert' non è chiaro. imposta un tipo di ritorno a quella funzione. – micronyks

risposta

9

Dal momento che un tipo di data è previsto per ogni ramo di ritorno, è necessario restituire un tipo Data per ogni if ​​/ else ramo oppure è possibile creare un'unione che restituisce due tipi diversi.

In entrambi i casi, è possibile restituire null per la terza condizione se il tipo è Data. Questo è valido in dattiloscritto.

autoValue: function() : Date|Object { 
    if (this.isInsert) { 
     return new Date(); 
    } else if (this.isUpsert) { 
     return {$setOnInsert: new Date()}; 
    } else { 
     this.unset(); 
     return null; 
    } 
} 
+1

grazie, nessun avviso più! –

+0

Felice di aiutare !! –