【问题标题】:Optional object parameter in typescript打字稿中的可选对象参数
【发布时间】:2021-06-07 12:16:16
【问题描述】:

我正在创建一个带有对象参数的简单函数。它接受openDialog 布尔属性,该属性决定是否运行另一个函数。我没有为它定义一个接口,因为它永远是一个单一的属性。我的问题是如何以不再需要将空对象传递给该函数的方式定义它? openDialog 是可选的,那么使该对象也成为可选的正确语法是什么?

function renderComponent({ openDialog }: { openDialog?: boolean }) {
  render(
    <Component />
  );

  if (openDialog) clickButton('Import Existing');
}

Typescript 抱怨 renderComponent() 与

预期 1 个参数,但得到 0 个。

它接受renderComponent({})

我知道默认参数function renderComponent({ openDialog }: { openDialog?: boolean } = {}) {,但我想知道是否有不同的方法。

【问题讨论】:

    标签: typescript


    【解决方案1】:

    那个错误:

    预期 1 个参数,但得到 0 个。

    意味着您必须将(一个)对象作为参数传递给此函数。

    如果您不使用此代码传递 openDialog 参数,您应该 像这样调用这个函数:

    renderComponent({});
    

    如果你有可选参数,你应该这样做:

    function renderComponent(args? : { openDialog?: boolean }) { 
        // your code 
    }
    
    renderComponent();
    

    【讨论】:

      【解决方案2】:

      也许这就是你想要达到的目标。

      function renderComponent(openDialog? : { openDialog?: boolean }) {
          render(
              <Component />
          );
      
          if (openDialog) clickButton('Import Existing');
      }
      

      【讨论】:

        猜你喜欢
        • 2022-11-16
        • 1970-01-01
        • 2020-05-22
        • 2018-05-26
        • 2019-04-29
        • 1970-01-01
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多