Utility Type - 2
→ T의 모든 속성을 선택 사항으로 만들기
*/**
* Make all properties in T optional
*/*
type Partial<T> = {
[P in keyof T]?: T[P];
};
type ToDo = {
title: string;
description: string;
label: string;
priority: 'high' | 'low';
};
function updateTodo(todo: ToDo, fieldsToUpdate: Partial<ToDo>): ToDo {
return { ...todo, ...fieldsToUpdate }; *// ...는 해당 객체 내의 property 들을 반환한다.
// 중복 key 는 맨 뒤에 선언된 key로 덮힌다.*
}
const todo: ToDo = {
title: 'learn TypeScript',
description: 'study hard',
label: 'study',
priority: 'high',
};
const updated = updateTodo(todo, { priority: 'low' });
console.log(updated);
/**
* [ 결과 ]
*
* {
* title: 'learn TypeScript',
* description: 'study hard',
* label: 'study',
* priority: 'low'
* }
*/
*// -> priority: 'low' 의 property만 부분적으로 선언*
이렇게 Partial 는 ToDo 타입 안의 프로퍼티(property) 의 부분적인 것만 선택적으로 호출하고자 할 때 사용한다. (Pick 과 비슷)