我仍然在学习一些javascript编程的基础知识(以及一般的编程)。
在我的角Firebase项目中,我得到了以下类型记录错误(或者更确切地说,是对visual studio代码的拟议更改,即灯泡图标):
Convert overload list to single signature
它指的是以下代码:
updateUser(user: UserDocument): Observable<any> {
const ref = doc(this.firestore, 'users', user.uid);
return from(updateDoc(ref, { ...user }));
}当我转换它时,它看起来是这样的:
updateUser(...args: [user: UserDocument]): Observable<any> {
const ref = doc(this.firestore, 'users', user.uid);
return from(updateDoc(ref, { ...user }));
}但现在它却在抱怨Remove unused declaration of args,也抱怨上次{ ...user }给了另一个电灯泡Import user from module "rxfire/auth"。
如果有人能简短地解释一下发生了什么,我会非常感激的。
谢谢!
编辑:为了更清晰起见,这里有两张截图


发布于 2022-02-25 22:49:39
在TypeScript中,过载指的是可以接受不同类型参数并返回不同类型值的函数。例如,从手册中,你可以
function makeDate(timestamp: number): Date;
function makeDate(m: number, d: number, y: number): Date;指示makeDate要么接受一个参数,一个数字,或者三个参数,所有数字。
这个
将重载列表转换为单个签名
警告似乎指的是这类事情的特定实例。您可以看到具体的这里。听起来像TypeScript确定的那样,因为函数的多个类型声明使用相同的签名,所以不需要这些多个(重载)声明,而只需要一个声明。
最好的方法是简单地删除另一个声明,并使用原来的声明。
如果您想使用rest参数方法:
updateUser(...args: [user: UserDocument]): Observable<any> {那么单个用户现在将在args[0]中。
updateUser(...args: [user: UserDocument]): Observable<any> {
const ref = doc(this.firestore, 'users', args[0].uid);
return from(updateDoc(ref, { ...args[0]}));
}但updateUser(user: UserDocument)更容易实现。
https://stackoverflow.com/questions/71272057
复制相似问题