Mapped Types
Partial Update Shape
A mapped type can make every property optional for update objects.
Partial Update Shape
partial_update.ts
type Task = {
title: string;
done: boolean;
points: number;
};
type Update<T> = {
[K in keyof T]?: T[K];
};
function applyUpdate(task: Task, update: Update<Task>): string {
const next: Task = { ...task, ...update };
return `${next.title}:${next.done}:${next.points}`;
}
const doneValue: boolean = ;
const original: Task = { title: "Trace", done: false, points: 3 };
const update: Update<Task> = { done: doneValue, points: 5 };
console.log(applyUpdate(original, update));
type Task = {
title: string;
done: boolean;
points: number;
};
type Update<T> = {
[K in keyof T]?: T[K];
};
function applyUpdate(task: Task, update: Update<Task>): string {
const next: Task = { ...task, ...update };
return `${next.title}:${next.done}:${next.points}`;
}
const doneValue: boolean = ;
const original: Task = { title: "Trace", done: false, points: 3 };
const update: Update<Task> = { done: doneValue, points: 5 };
console.log(applyUpdate(original, update));
optional mapped property
Adding `?` inside a mapped type creates a version where each key may be omitted.