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

Relaterade artiklar