当前位置: 首页 > 知识库问答 >
问题:

前端 - typscrip重载签名问题?

卢出野
2023-06-24
function getMessage(value: number, myName: string): Message | undefined
function getMessage(value: messageType, readRecordCount: number): Message[]
function getMessage(value: any, readRecordCount: number = 1, myName: string = "2"): Message | Message[] | undefined {
  console.log(myName);

  if (typeof value === "number") {
    return messages.find(item => item.id === value)
  } else {
    return messages.filter(item => item.type === value).splice(0, readRecordCount)
  }
}

这里的第一个getMessage重载签名为什么与实现签名不兼容 我已经给值并且赋值初始值了

共有2个答案

凤凡
2023-06-24

声明中的第一个重载,函数签名是 (number, string) => Message | undefined
第二个重载,签名是 (messageType, number) => Message[]

所以实现必须要包含这些参数类型(按顺序)和返回类型,就是

(number | messageType, string | number) => Message[] | Message | undefined

衡高寒
2023-06-24

因为 TypeScript 是按照参数的序号来确定参数的,或者说这些参数都不是命名参数。
你的第一个重载里面,myName 是第二个参数,对应的是函数实现的readRecordCount,所以实际上 readRecordCount 的类型应当为 string|number,后面那个参数则是多余的。

如果你要在 TS/JS 中使用命名参数的话,可以使用对象来传参:

function getMsg(args: { value: number, myName: string }): Message | void;
function getMsg(args: { value: number, readRecordCount: number }): Message[];
function getMsg(
  {
    value,
    readRecordCount = 1,
    myName = ""
  }:
  {
    value: number,
    readRecordCount?: number,
    myName?: string
}){
  // codes here
}
 类似资料:
  • 请问阿里云中这个Secret是如何获得的? https://help.aliyun.com/zh/sdk/product-overview/v3-request-st...

  • 这个a标签的高度为什么会高一点点?

  • 前言 随着区块链等相关技术的创新和突破,很多有形或无形资产都将实现去中心化,数字资产将无处不在。比如我们这里分享的 亿书 就是要把数字出版物版权进行保护,实现去中心化,解决业界多年来版权保护不力的难题。 无论数字资产,还是数字出版版权,都是有明确所有权的,当前实现数字资产所属的技术手段就是本篇要介绍的签名。而多重签名是对签名的扩展使用,给数字资产转移提供了安全保障和技术手段。本篇,从基本概念入手,

  • 我尝试多次使用itext 5.5.13.1模拟不同用户的签名对文档进行签名,PdfStamper位于AppendMode上。如果文档没有签名,则证书级别为CERTIFIED_NO_CHANGES_ALLOWED或CERTIFIED_FORM_FILLING_AND_ANNOTATIONS,否则我不会为PdfSignatureAppearnce设置此参数。第二次签名后,第一次签名无效,因为文档已更改

  • 由比特币的签名机制可知,如果丢失了私钥,没有任何办法可以花费对应地址的资金。 这样就使得因为丢失私钥导致资金丢失的风险会很高。为了避免一个私钥的丢失导致地址的资金丢失,比特币引入了多重签名机制,可以实现分散风险的功能。 具体来说,就是假设N个人分别持有N个私钥,只要其中M个人同意签名就可以动用某个“联合地址”的资金。 多重签名地址实际上是一个Script Hash,以2-3类型的多重签名为例,它的

  • 我正在使用此代码上传文件 `const url=“https://storage.googleapis.com//file.png.png?x-goog-algorithm=goog4-rsa-sha256&x-goog-credential=gitlab-ci%.iam.gserviceaccount.com%2f20200521%2fauto%2fstorage%2fgoog4_request