유틸리티 타입 1 (기존 타입 변형하기)
이미 만들어둔 인터페이스나 타입을 재활용하기 위해 TS가 기본 제공하는 내장 마법 도구들입니다. Partial은 필수 항목들을 전부 옵션으로 느슨하게 풀어주고, Readonly는 모든 값을 얼려버립니다.
interface User { name: string; age: number; }
// 1. Partial<T>: 모든 속성을 선택적(?)으로 바꿔줌 (업데이트 API 짤 때 유용)
type PartialUser = Partial<User>; // { name?: string; age?: number; }
// 2. Readonly<T>: 모든 속성을 수정 불가 상태로 잠가버림
type ReadonlyUser = Readonly<User>;
// 3. Record<K, T>: 객체의 Key와 Value 타입을 한방에 정의함
// 키는 무조건 string, 값은 무조건 숫자(점수)인 객체
type Scores = Record<string, number>;
const mathScore: Scores = { "민수": 100, "철수": 85 };