假设我有这样的东西:
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})
如有任何解决办法或建议,我们将不胜感激。
虽然这些都是可选参数,但函数仍然需要某种标识符才能知道参数的索引,但显然,替代方法是使用接口作为参数。在您的情况下,它将类似于:
export interface setting
{
a?: any;
b?: any;
c?: any;
d?: any;
}
export function myFunction(params: setting){
}
myFunction({a: 2, d: 5})
参考:如何传递可选参数,同时省略一些其他可选参数?