키 수집
원본 객체의 속성 이름을 유니온으로 만든 뒤 순회합니다.
mapped type
객체 타입 변환은 키 집합을 순회하면서 속성 규칙과 값 타입을 단계적으로 바꾸는 작업입니다.
원본 객체의 속성 이름을 유니온으로 만든 뒤 순회합니다.
필수와 선택 속성을 `?`, `-?`로 목적에 맞게 바꿉니다.
템플릿 리터럴 타입으로 이벤트 이름이나 API 필드를 만듭니다.
원본 속성 타입을 읽어 래핑, 제거, 변환 규칙을 적용합니다.
전체 구조를 유지하면 `Partial`, `Readonly` 계열이 맞습니다.
키 일부만 남기면 `Pick`, 제외하면 `Omit`을 우선 봅니다.
새 키 규칙이 있으면 `as`로 다시 매핑합니다.