아이템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 - 정의되지 않은 상황이면
인덱스 시그니처를 이용하자.