I’m going through a code base and ran into complex syntax
return json?.result?.map(
({ text: label, value }: { text: string; value: any }) => ({
label,
value,
}),
);
I understand vaguely (correct me if I’m wrong) something like
For each result from the json object, run a function that takes in an object as a param and returns another object.
The param implements an interface with this : { text: string; value: any }
I don’t understand what’s going on here though { text: label, value }. label is not a variable declared anywhere.
Advertisement
Answer
{ text: label, value } is a destructuring assignment and doesn’t really have anything to do with typescript. It takes some object and binds its key ‘value’ to a local variable named value and its key ‘text’ to some local variable named ‘label’.
For example:
const testObj = {
text: "text",
value: "value"
}
const printTestObj = ({ text: label, value }) => {
console.log("label = " + label)
console.log("value = " + value)
}
printTestObj(testObj)