假设我有这样的东西:
createSettings(a = null, b = null, c = null, d = 50) {
}
我真的想避免这样调用我的函数:
createSettings(null, null, null, 60)
我知道一种方法是接受一个对象而不是多个参数:
createSettings(settings) {
}
然后我会这样称呼:
createSettings({d: 60})
但是这种方法的问题在于,我失去了知道应该传递给函数的内容的优势!,这意味着该函数仅说通过设置,而没有说该设置可以接受a, b, c, d
! ,这很重要,因为它可以帮助我理解如何使用函数,并且我的函数通常很复杂,并且知道要传递的内容也非常重要。
这是我的问题,有没有办法将这两种方法结合起来并具有功能:
createSettings(a = null, b = null, c = null, d = 50) {
}
然后这样称呼它?:
createSettings(...{d: 50})
任何解决方案或建议都值得赞赏。
答案 0 :(得分:1)
尽管这些是可选参数,但您的函数仍将需要某种标识符才能使其知道参数的索引,但是显然,替代方法是使用接口作为您的参数。 在您的情况下,它将类似于:
export interface setting
{
a?: any;
b?: any;
c?: any;
d?: any;
}
export function myFunction(params: setting){
}
myFunction({a: 2, d: 5})
参考:How to pass optional parameters while omitting some other optional parameters?