期望2个参数但只传递了1个。- 但我只想传递一个。

3

我创建了一个带有以下签名的函数:

  const createSomething = (
    someRange: number[],
    { option }: { option?: boolean }
  ) =>...

有时我只将 someRange 参数传递给函数,有时还会传递额外的对象参数。 但是我收到一个错误,说该函数需要两个参数。如何将第二个参数声明为可选参数?
2个回答

4

相当奇怪的是,你不能做到:

const createSomething = (
    someRange: number[],
    { option }?: { option?: boolean } // INVALID
) => {}

所以你需要做的是:

const createSomething = (
    someRange: number[],
    { option }: { option?: boolean } = {}
) => {}

但是当你将鼠标悬停在createSomething上时,它显示的签名是前者吗?

odd behavior

无论如何,是的,你可以使用默认值来表示它是可选的。
回顾起来,很明显为什么它是无效的。如果第二个参数是undefined,那么你就不能解构它。

1

给你的选项对象一个默认值{},你也可以给option属性一个默认值:

const createSomething = (
    someRange: number[],
    { option = false }: { option?: boolean } = {}
) => {
    console.log(option);
};

createSomething([1]); // Compiles and displays false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接