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.
