Todavía estoy aprendiendo algunos conceptos básicos de programación javascript (y programación en general).
En mi proyecto de Angular Firebase, aparece el siguiente error mecanografiado (o más bien un cambio propuesto en el código de Visual Studio, es decir, el ícono de la bombilla):
Convert overload list to single signature
Se refiere al siguiente código:
updateUser(user: UserDocument): Observable<any> { const ref = doc(this.firestore, 'users', user.uid); return from(updateDoc(ref, { ...user })); }Cuando lo convierto, aparece así:
updateUser(...args: [user: UserDocument]): Observable<any> { const ref = doc(this.firestore, 'users', user.uid); return from(updateDoc(ref, { ...user })); } Pero ahora, en cambio, se queja Remove unused declaration of args y también se queja de la última oferta { ...user } dando otra bombilla Import user from module "rxfire/auth"
Agradecería mucho si alguien diera una breve explicación de lo que está pasando.
¡Gracias!
EDITAR: aquí hay dos capturas de pantalla solo para mayor claridad
En TypeScript, una sobrecarga se refiere a una función que puede aceptar diferentes tipos de parámetros y devolver diferentes tipos de valores. Por ejemplo, del manual, podría haber
function makeDate(timestamp: number): Date; function makeDate(m: number, d: number, y: number): Date; indicando que makeDate acepta un argumento, un número o tres argumentos, todos números.
los
Convertir lista de sobrecarga en firma única
advertencia parece referirse a una instancia particular de este tipo de cosas. Puedes ver los detalles aquí . Parece que TypeScript determinó que debido a que varias declaraciones de tipo de la función usan la misma firma, no hay necesidad de esas declaraciones múltiples (sobrecargadas) y, en cambio, solo tiene una.
El mejor enfoque sería simplemente eliminar la otra declaración y usar lo que tenía originalmente.
Si desea utilizar el enfoque de parámetros de descanso:
updateUser(...args: [user: UserDocument]): Observable<any> { entonces el usuario único ahora estaría en args[0] :
updateUser(...args: [user: UserDocument]): Observable<any> { const ref = doc(this.firestore, 'users', args[0].uid); return from(updateDoc(ref, { ...args[0]})); } Pero updateUser(user: UserDocument) es más fácil.