有没有办法避免将所有参数传递给函数[重复]
Posted
技术标签:
【中文标题】有没有办法避免将所有参数传递给函数[重复]【英文标题】:Is there a way to avoid passing all the parameters to a function [duplicate] 【发布时间】:2020-04-15 07:46:00 【问题描述】:假设我有这样的事情:
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)
非常感谢任何解决方案或建议。
【问题讨论】:
这能回答你的问题吗? Pass object to javascript function JSDoc 或 Typescript 与良好的 IDE 可以为您提供您正在寻找的智能感知 @Saurav 我确定不是 简而言之:没有。避免设计经常需要跳过大多数参数的函数。 为什么堆栈溢出搜索系统这么弱?!,我什至通读了所有建议的问题,但找不到重复的问题... 【参考方案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?
【讨论】:
您的解决方案不起作用,至少在 VSCode 中的智能感知不会将a, b, c, d
显示为 params
的参数
对不起,我已经为你修好了以上是关于有没有办法避免将所有参数传递给函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在Python中将多个参数传递给pool.map()函数[重复]
将参数传递给 package.json 中的 npm 脚本 [重复]
如何将传递给我的 bash 脚本的所有参数传递给我的函数? [复制]