提问者:小点点

有没有一种方法可以避免将所有参数传递给一个函数[重复]


假设我有这样的东西:

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})  

如有任何解决办法或建议,我们将不胜感激。


共1个答案

匿名用户

虽然这些都是可选参数,但函数仍然需要某种标识符才能知道参数的索引,但显然,替代方法是使用接口作为参数。在您的情况下,它将类似于:

 export interface setting
{
a?: any;
b?: any;
c?: any;
d?: any;
}

export function myFunction(params: setting){   
}


myFunction({a: 2, d: 5})

参考:如何传递可选参数,同时省略一些其他可选参数?