프로그래밍/Typescript

타입 스크립트 인덱스드 시그니처(indexed signature)

타코코딩 2024. 2. 4. 18:45
타입스크립트(TypeScript)에서 인덱스드 시그니처(indexed signature)는 객체의 속성 이름과 값의 타입을 동적으로 지정할 수 있는 강력한 기능입니다. 이 기능은 특정 형태의 속성 이름이나 값의 타입을 사전에 정확히 알 수 없을 때 유용합니다. 인덱스드 시그니처를 사용하면, 객체가 다양한 키를 가질 수 있으며, 각 키의 값이 특정 타입을 만족해야 함을 명시할 수 있습니다.

인덱스드 시그니처의 기본 구조

인덱스드 시그니처는 다음과 같은 형태를 가집니다:

 interface SomeObject { [key: KeyType]: ValueType; }
  • KeyType은 인덱스의 타입으로, string 또는 number를 사용할 수 있습니다.
  • ValueType은 해당 키에 할당될 값의 타입을 나타냅니다.

예시: 사용자 객체에 인덱스드 시그니처 사용하기

사용자가 다양한 속성을 가질 수 있는 사용자 객체를 정의해야 한다고 가정해 보겠습니다. 각 사용자는 여러 속성을 가질 수 있으며, 각 속성의 값은 문자열이어야 합니다. 이 경우 인덱스드 시그니처를 사용하여 이를 표현할 수 있습니다.

interface User { [propertyName: string]: string; } let user: User = { name: "John Doe", email: "john.doe@example.com", age: "30" // `age`는 문자열 타입이어야 합니다

 

이 예시에서 User 인터페이스는 어떤 문자열 키에도 문자열 값이 할당될 수 있음을 명시합니다. 따라서 user 객체는 name, email, age 등 어떤 속성도 가질 수 있으며, 모든 값은 문자열이어야 합니다.

인덱스드 시그니처의 활용

인덱스드 시그니처는 다음과 같은 경우에 유용하게 사용될 수 있습니다:

  • 동적 속성 이름: 객체의 속성 이름이 런타임에 결정되거나 사용자 입력에 의해 달라질 때
  • 동일한 타입의 값: 모든 속성 값이 동일한 타입을 가져야 할 때
  • 유연한 구조: 객체의 정확한 구조를 사전에 알 수 없거나, 구조가 유동적일 때

주의 사항

  • 인덱스드 시그니처는 유연성을 제공하지만, 사용 시 객체의 속성에 대한 타입 안정성이 감소할 수 있습니다. 가능한 한 구체적인 타입을 사용하는 것이 좋습니다.
  • 모든 속성이 동일한 타입을 가질 필요가 없다면, 더 구체적인 타입이나 인터페이스를 사용하거나, 유니온 타입을 고려해야 합니다.

결론

타입스크립트의 인덱스드 시그니처는 객체의 구조가 유연하면서도 타입 안정성을 유지해야 할 때 매우 유용합니다. 이를 통해 개발자는 더 동적이고 유연한 애플리케이션을 구축할 수 있으며, 타입스크립트의 강력한 타입 시스템을 최대한 활용할 수 있습니다.

'프로그래밍 > Typescript' 카테고리의 다른 글

타입스크립트 Object 와 {} 타입  (0) 2024.02.04
인터페이스 연습  (0) 2024.01.05