有没有一种避免将所有参数传递给函数的方法

时间:2019-12-24 07:13:55

标签: javascript reactjs design-patterns

假设我有这样的东西:

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 个答案:

答案 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?