【问题标题】:How to use Optional Parameter and Rest Parameter together in Typescript?如何在 Typescript 中同时使用可选参数和剩余参数?
【发布时间】:2019-12-31 04:50:37
【问题描述】:

我想要一个函数定义,它应该包含可选参数和休息参数。在调用该函数时,我没有从该函数获得所需的输出。在调用函数时我应该使用一些特殊的关键字吗?

在下面的函数中,地址是可选参数,名称是休息参数。如何调用这个函数?

function Greet(age:number,address?:string,...names: string[]):void{
    console.log(age);
    console.log(address);
    console.log(names)
}

Greet(20,"Mathan","Maddy")

这里只将参数传递给年龄和姓名。但第二个值“Mathan”在我的函数中被考虑作为地址。

【问题讨论】:

  • “没有从函数中得到想要的输出” 这是什么意思?您提供的输入是什么?您是否希望该函数能够接受names 没有 address?如果是这样,那是行不通的。
  • 是的,这是我的问题。我已经更新了我的问题。提供了更多的清晰度。
  • 从 JavaScript 引擎的角度思考这个问题:它怎么知道Greet(20,"Mathan","Maddy") 中的"Mathan" 应该是一个名字,而Greet(20,"90 Fake Street","Maddy") 中的"90 Fake Street" 是应该是地址?在这两种情况下,它所知道的只是传递了一个数字和两个字符串。无法以您尝试的方式使用可选参数和休息参数。你需要重新考虑你的方法。

标签: typescript


【解决方案1】:

除了为可选值明确指定 undefined 之外,我真的没有看到任何其他方法:

Greet(20, undefined, 'Maddy')

无法推断第二个参数是可选参数还是其他参数的开始。

【讨论】:

  • 是的,我试过了,在这种情况下,地址将是未定义的。相反,我不想对它有任何价值。
  • 如果不传递任何值,该值也将是undefined。如果您调用Greet(20),请记录输出。这就是undefined 的意思。
  • @Mathan undefined 几乎是你所能得到的“没有价值”。
猜你喜欢
  • 1970-01-01
  • 2014-01-31
  • 2019-08-02
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 2019-01-13
  • 1970-01-01
相关资源
最近更新 更多