【发布时间】:2020-07-17 18:57:25
【问题描述】:
给定一个带有可选参数的函数:
function DoSomething(a, b?) {
/** Implementation */
}
如何确定函数体内是否提供了可选参数?目前,我能想到的最好的方法是:
typeof b === 'undefined'
但这有点凌乱,不直接阅读。由于 TypeScript 提供了可选参数支持,我希望它也有一种直观的方式来检查是否提供了参数。
如上例所示,我不介意可选参数是显式设置为undefined 还是根本不提供。
编辑
很遗憾,这个问题并没有应有的清晰,尤其是在略读的情况下。它的目的是关于如何干净地检查可选参数是否完全省略,如:
DoSomething("some value");
我接受了 Evan 的回答,因为他的解决方案 (b === undefined) 比我的问题 (typeof b === 'undefined') 中的解决方案更干净,同时仍然具有相同的行为。
其他答案肯定有用,哪个答案对你来说是正确的取决于你的用例。
【问题讨论】:
-
取决于您要检查的内容,有人可能会调用您的方法
foo(1, undefined)。您可以查看arguments.length。 -
@EvanTrimboli,谢谢;我觉得你是对的。我已经更新了问题以澄清这两种可能性都是可以接受的。
-
我投票结束这个问题,因为它不清楚,因为它已经完成了它的过程,最终根据它的解释方式有多个“正确”的答案。
标签: typescript