• 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 과 비슷)