首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“将重载列表转换为单个签名”是什么意思?

“将重载列表转换为单个签名”是什么意思?
EN

Stack Overflow用户
提问于 2022-02-25 21:49:37
回答 1查看 143关注 0票数 0

我仍然在学习一些javascript编程的基础知识(以及一般的编程)。

在我的角Firebase项目中,我得到了以下类型记录错误(或者更确切地说,是对visual studio代码的拟议更改,即灯泡图标):

Convert overload list to single signature

它指的是以下代码:

代码语言:javascript
复制
  updateUser(user: UserDocument): Observable<any> {
    const ref = doc(this.firestore, 'users', user.uid);
    return from(updateDoc(ref, { ...user }));
  }

当我转换它时,它看起来是这样的:

代码语言:javascript
复制
  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"

如果有人能简短地解释一下发生了什么,我会非常感激的。

谢谢!

编辑:为了更清晰起见,这里有两张截图

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-25 22:49:39

在TypeScript中,过载指的是可以接受不同类型参数并返回不同类型值的函数。例如,从手册中,你可以

代码语言:javascript
复制
function makeDate(timestamp: number): Date;
function makeDate(m: number, d: number, y: number): Date;

指示makeDate要么接受一个参数,一个数字,或者三个参数,所有数字。

这个

将重载列表转换为单个签名

警告似乎指的是这类事情的特定实例。您可以看到具体的这里。听起来像TypeScript确定的那样,因为函数的多个类型声明使用相同的签名,所以不需要这些多个(重载)声明,而只需要一个声明。

最好的方法是简单地删除另一个声明,并使用原来的声明。

如果您想使用rest参数方法:

代码语言:javascript
复制
updateUser(...args: [user: UserDocument]): Observable<any> {

那么单个用户现在将在args[0]中。

代码语言:javascript
复制
  updateUser(...args: [user: UserDocument]): Observable<any> {
    const ref = doc(this.firestore, 'users', args[0].uid);
    return from(updateDoc(ref, { ...args[0]}));
  }

updateUser(user: UserDocument)更容易实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71272057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档