본문으로 건너뛰기

아이템15

동적 데이터에 인덱스 시그니처 사용

  • 타입스크립트는 문법 생성이 간단한다.
  • 인덱스 시그니처를 명시하여 유연하게 매핑을 표현할 수 있다.
type Rocekt = {[property:string]:string}

const rocket:Rocket = {
name : "Falcon 9",
variant : "v1.0",
thrust: "4,490 kN"
}
  • {[property:string]:string} 은 인덱스 시그니처이며 세 가지 의미를 담고 있다.
  • 키의의미 : 키의 이치만 표시하는 용도이며, 타입 체커에선 사용하지 않는다.
  • 키의 타입 : string이나 number 또는 symbol 조합이어야 하지만 보통은 string을 사용한다.
  • 값의 타입 : 어떤 것이든 될 수 있다.

단점

  • 잘못된 키를 포함홰 모든 키 허용
  • 특정 키가 필요하지 않을 수도 있다.
  • 키마다 다른 타입을 가질 수 없다.
  • 자동완성의 이점이 없다 .

해결법

  • 인터페이스를 이용한다.
interface Rocket = {
name : "Falcon 9",
variant : "v1.0",
thrust: "4,490 kN"
}

정리

  • 정의된 객체이면 interface
  • 정의되지 않은 상황이면 인덱스 시그니처를 이용하자.