我有一个带有此签名的函数:
createUiLabel = (text, fontProperties) ->
我希望 fontProperties 是可选的,如果未定义,则默认为如下所示:
{
size: defaultSize
family: defaultFamily
color: defaultColor
}
我知道我可以通过像这样的解构来实现这一点:
createUiLabel = (text, fontProperties = {
size: defaultSize
family: defaultFamily
color: defaultColor
}) ->
但是能够像这样调用这个函数真的很方便:
createUiLabel("foo", {size: 14})
并且让颜色
和系列
仍然使用默认值。但似乎传入此对象会覆盖其他属性,因此 color
和 family
变得未定义。当您只想更改一个属性时,必须定义这些其他属性,从外部来看是非常烦人的。如何轻松实现该函数,以便前面的调用将为我提供 color
和 family
的默认值?
这看起来类似于 Most concise way to assign a value from a variable only if it exists in CoffeeScript?不同之处在于,中间有一个可选对象,我试图从中提取可选字段。
最佳答案
我会使用存在 operator 进行显式复合赋值在空默认值上:
createUiLabel = (text, fontProperties = {}) ->
fontProperties.size ?= defaultSize
fontProperties.color ?= defaultColor
fontProperties.family ?= defaultFamily
…
关于javascript - 在 CoffeeScript 中为可选参数的字段设置默认值的简洁方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250158/