javascript - Hur man lägger till standardvärde i funktionsparametrar i typescript?


Jag försöker lägga till den sista typbiten i min funktion, men TypeScript klagade oavsett vad jag gör. Jag vet att det finns ett sätt att lösa det och behöver din hjälp.

export const getPropertiesArray = <T extends object, K extends keyof T>(data: T[], property: K) => {
    return data.map(item => item[property]).sort();
};

Det här är min funktion och jag behöver lägga till ett standardvärde för property, i det här fallet är standardvärdet "ID".

Svar #1

Att skicka standardvärdet "ID" kan inte tilldelas begränsningen för object.
Du bör faktiskt anta att ID alltid är en nyckel i ditt objekt.

Här är en lösning:

// T extends { ID: any } - You may replace any by your ID type
export const getPropertiesArray = <T extends { ID: any }>(
  data: T[],
  property: keyof T = 'ID'
) => {
  return data.map(item => item[property]).sort()
}

Svar #2

Generellt är svaret på frågan som den ställts enkelt - formatet för en standardparameter är myParam="default value", så till exempel

function myFunc(param1 = "default value") {
    //...
}

Du kan läsa mer om standardparametrar i Typescript här: https://www.typescriptlang.org/docs/handbook/functions.html#optional-and-default-parameters

DOCK: OP:s specifika scenario involverar en keyof-parameter, som kräver särskild hantering. Se Simon Bruneauds svar för detta.

Relaterade artiklar