자바스크립트는 문자열 키를 타입에 관계없이 매핑한다.
const rocket = {
name: 'Falcon 9',
variant: 'Block 5',
thrust: '7,607 kN',
}
타입스크립트에서도 인덱스 시그니처를 사용하여 유연하게 키와 값을 매핑할 수 있다.
type Rocket = { [property: string]: string }
const rocket: Rocket = {
name: 'Falcon 9',
variant: 'Block 5',
thrust: '7,607 kN',
}
[property: string]: string
이 바로 인덱스 시그니처이다. 여기에는 다음과 같은 세 가지 의미가 있다.
즉, 인덱스 시그니처를 사용하면 객체의 키와 값을 각각의 타입에 상관없이 매핑할 수 있다.
이렇듯 인덱스 시그니처는 객체가 유연하게 키와 값을 매핑할 수 있도록 해 주지만, 다음과 같은 단점이 있을 수 있다.
Rocket
타입이다.thrust
키의 값 타입을 string이 아니라 number로 하고 싶어도 안 된다.