요약

내용

  • 인덱스 시그니처(Index Signature)는 객체의 속성이 동적으로 정해질 때, 객체의 속성 이름이 사전에 고정되어 있지 않을 때 사용된다. 이를 통해 객체가 특정 타입의 값들을 포함하도록 타입을 정의할 수 있다.
interface StringMap {
  [key: string]: string;
}
 
const myMap: StringMap = {
  "name": "Alice",
  "age": "25",
  "city": "Wonderland"
};

[key: string]: string;는 인덱스 시그니처로 객체의 키와 값이 문자열임을 나타낸다.

interface Config {
  server: string;
  [key: string]: string | number | boolean;
}
 
const config: Config = {
  "server": "localhost",
  "port": 8080,
  "useSSL": false
};
  • 주의점
    • 정적 속성과 혼용하면 호환되지 않을 수 있다.
      • Config의 server: string으로 인덱스 시그니처에 호환되므로 정상 동작을 한다.
    • 제한된 타입을 사용한다. 복잡한 타입을 사용하면 타입 시스템의 이점을 잃어버린다.
    • 많은 동적 속성을 사용하는 경우 성능에 영향을 줄 수 있다.

참고

  • 이펙티브 타입스크립트