【问题标题】:Expected 2 arguments but got 1 - but I want to pass just one预期有 2 个参数但得到 1 个 - 但我只想传递一个
【发布时间】:2023-02-23 23:57:44
【问题描述】:
我用这个签名创建了一个函数:
const createSomething = (
someRange: number[],
{ option }: { option?: boolean }
) =>...
有时我只向函数传递 someRange 参数,有时传递附加对象参数。但是我收到一个错误,该函数需要两个参数。我如何声明第二个参数是可选的?
【问题讨论】:
标签:
javascript
typescript
【解决方案1】:
你不能这样做很奇怪:
const createSomething = (
someRange: number[],
{ option }?: { option?: boolean } // INVALID
) => {}
所以你必须这样做:
const createSomething = (
someRange: number[],
{ option }: { option?: boolean } = {}
) => {}
但是当你将鼠标悬停在createSomething 上时,它显示的签名是前者???
无论如何,是的,您可以使用默认值来表明它是可选的。
【解决方案2】:
给你的选项对象一个默认值{},你也可以给option属性一个默认值:
const createSomething = (
someRange: number[],
{ option = false }: { option?: boolean } = {}
) => {
console.log(option);
};
createSomething([1]); // Compiles and displays false