javascript - Förväntade 2 argument men fick 1 - men jag vill bara skicka ett
Jag skapade en funktion med denna signatur:
const createSomething = (
someRange: number[],
{ option }: { option?: boolean }
) =>...
Ibland skickar jag till funktionen bara someRange-argumentet, och ibland det ytterligare objektargumentet. Men jag får ett fel som säger att funktionen förväntar sig två argument. Hur kan jag deklarera det andra argumentet som valfritt?
Svar #1
Det är ganska konstigt att du inte kan göra:
const createSomething = (
someRange: number[],
{ option }?: { option?: boolean } // INVALID
) => {}
så du måste göra:
const createSomething = (
someRange: number[],
{ option }: { option?: boolean } = {}
) => {}
men när du hovrar över createSomething visas signaturen som den tidigare???
Hur som helst, ja, du kan använda ett standardvärde för att visa att det är valfritt.
I efterhand är det ganska uppenbart varför det är ogiltigt. Om den andra parametern är undefined, kan du inte destrukturera den.
Svar #2
Ge ditt options-objekt ett standardvärde {}, du kan också ge option-egenskapen ett standardvärde också:
const createSomething = (
someRange: number[],
{ option = false }: { option?: boolean } = {}
) => {
console.log(option);
};
createSomething([1]); // Compiles and displays false
