最佳答案
我想编写一个函数,它接受一个对象参数,在函数签名中使用解构,并且这个参数是可选的:
myFunction({opt1, opt2}?: {opt1?: boolean, opt2?: boolean})
但是,Type 脚本不允许(“绑定模式参数在实现签名中不能是可选的”)。
当然,如果我不破坏的话,我可以做到这一点:
myFunction(options?: {opt1?: boolean, opt2?: boolean}) {
const opt1 = options.opt1;
const opt2 = options.opt1;
...
看起来这两个应该是一样的,但是上面的例子是不允许的。
我想使用一个非结构化语法(1) ,因为它确实存在,而且是一个很好的语法,上面两个函数的作用相同似乎是很自然的,(2)因为我还想用一种简洁的方式来指定默认值:
myFunction({opt1, opt2 = true}?: {opt1?: boolean, opt2?: boolean})
如果不重构,我必须在函数的实现中隐藏这些缺省值,或者有一个实际上是带有构造函数的类的参数..。