打字稿中的可选对象参数

时间:2021-06-07 12:16:16

标签: typescript

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

openDialog

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

<块引用>

需要 1 个参数,但得到 0 个。

它接受 renderComponent()

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

2 个答案:

答案 0 :(得分:2)

也许这就是您想要实现的目标。

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

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

答案 1 :(得分:1)

那个错误:

<块引用>

需要 1 个参数,但得到 0 个。

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

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

renderComponent({});

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

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

renderComponent();