我创建了一个带有以下签名的函数:
const createSomething = (
someRange: number[],
{ option }: { option?: boolean }
) =>...
有时我只将
someRange
参数传递给函数,有时还会传递额外的对象参数。 但是我收到一个错误,说该函数需要两个参数。如何将第二个参数声明为可选参数?我创建了一个带有以下签名的函数:
const createSomething = (
someRange: number[],
{ option }: { option?: boolean }
) =>...
someRange
参数传递给函数,有时还会传递额外的对象参数。 但是我收到一个错误,说该函数需要两个参数。如何将第二个参数声明为可选参数?相当奇怪的是,你不能做到:
const createSomething = (
someRange: number[],
{ option }?: { option?: boolean } // INVALID
) => {}
所以你需要做的是:
const createSomething = (
someRange: number[],
{ option }: { option?: boolean } = {}
) => {}
但是当你将鼠标悬停在createSomething
上时,它显示的签名是前者吗?
undefined
,那么你就不能解构它。给你的选项对象一个默认值{}
,你也可以给option
属性一个默认值:
const createSomething = (
someRange: number[],
{ option = false }: { option?: boolean } = {}
) => {
console.log(option);
};
createSomething([1]); // Compiles and displays false