Arrays and Tuples
Destructuring
Destructuring pulls typed values out of arrays and objects into named variables.
destructuring
Destructuring assigns pieces of a value to local names in one statement.
Destructuring
destructuring.ts
Replay: real traced execution (multi-file project)
const user: [string, number] = ["Ada", 3];
const [name, lessonCount] = user;
const nextLesson: string = "objects";
const message: string = `${name} has ${lessonCount} lessons before ${nextLesson}.`;
console.log(message);
const user: [string, number] = ["Grace", 5];
const [name, lessonCount] = user;
const nextLesson: string = "objects";
const message: string = `${name} has ${lessonCount} lessons before ${nextLesson}.`;
console.log(message);
const user: [string, number] = ["Linus", 2];
const [name, lessonCount] = user;
const nextLesson: string = "objects";
const message: string = `${name} has ${lessonCount} lessons before ${nextLesson}.`;
console.log(message);
user ← Ada,3, name ← Ada, lessonCount ← 3, nextLesson ← objects
1const user→ Ada,3: [string, number] = ["Ada", 3]; //@user=["Grace", 5], ["Linus", 2]2const [name→ Ada, lessonCount→ 3] = user→ Ada,3;34const nextLesson→ objects: string = "objects";5const message→ Ada has 3 lessons before objects.: string = `${nameAda} has ${lessonCount3} lessons before ${nextLessonobjects}.`;67console.log(messageAda has 3 lessons before objects.);outputAda has 3 lessons before objects.
user ← Grace,5, name ← Grace, lessonCount ← 5, nextLesson ← objects
1const user→ Grace,5: [string, number] = ["Grace", 5];2const [name→ Grace, lessonCount→ 5] = user→ Grace,5;34const nextLesson→ objects: string = "objects";5const message→ Grace has 5 lessons before objects.: string = `${nameGrace} has ${lessonCount5} lessons before ${nextLessonobjects}.`;67console.log(messageGrace has 5 lessons before objects.);outputGrace has 5 lessons before objects.
user ← Linus,2, name ← Linus, lessonCount ← 2, nextLesson ← objects
1const user→ Linus,2: [string, number] = ["Linus", 2];2const [name→ Linus, lessonCount→ 2] = user→ Linus,2;34const nextLesson→ objects: string = "objects";5const message→ Linus has 2 lessons before objects.: string = `${nameLinus} has ${lessonCount2} lessons before ${nextLessonobjects}.`;67console.log(messageLinus has 2 lessons before objects.);outputLinus has 2 lessons before objects.
Follow the Destructure
userstarts as["Ada", 3].- Destructuring assigns the first value to
name. - It assigns the second value to
lessonCount. nextLessonisobjects.- The message becomes
Ada has 3 lessons before objects.| source value | local name | final text part | | --- | --- | --- | | Ada |name| Ada | | 3 |lessonCount| 3 lessons | | objects |nextLesson| before objects |
Exercise: destructuring.ts
Reproduce Ada has 3 lessons before objects., then use the pinned user variants to predict Grace has 5 lessons before objects. and Linus has 2 lessons before objects.