【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 2018-09-07
        • 2022-08-24
        • 1970-01-01
        • 2020-05-19
        • 2019-11-04
        • 2020-11-07
        • 1970-01-01
        • 2021-03-03
        • 1970-01-01
        相关资源
        最近更新 更多