Index Model

열린 키와 정확한 키를 다른 도구로 모델링한다

자바스크립트의 동적 속성 접근을 타입으로 옮길 때는 키 범위가 열려 있는지, 이미 정해져 있는지부터 나눈다.

동적 속성 설계 갈림길

key space
  1. 키가 열림
  2. 값 상한
  3. 키가 확정
  4. 타입 추출

인덱스 시그니처

[key: string]: V는 모르는 이름의 속성까지 같은 값 타입으로 받는다.

명시 속성 일치

name, id 같은 고정 속성도 값 타입 V에 들어가야 한다.

숫자 키 변환

숫자 인덱스는 런타임에서 문자열 키처럼 다뤄져 string 규칙과 충돌할 수 있다.

keyof와 T[K]

실제 키만 받고, 선택한 키의 값 타입을 반환 타입으로 연결한다.

Record<K, V>

키 유니온이 정해진 딕셔너리에서 모든 키의 존재와 값 타입을 강제한다.

UserProfile

[key: string]: string을 열면 id: number는 충돌한다. 허용하려면 값 타입을 string | number로 넓혀야 한다.