[TS] 타입 별칭과 인덱스 시그니처

TIL

타입 별칭 (Type Alias)

타입 별칭을 이용하면 다음과 같이 변수를 선언하듯 타입을 별도로 정의할 수 있다.

type User = {
  id: number;
  name: string;
  nickname: string;
  mbti: string;
}
let user1: User = {
  id: 1,
  name: "유재석",
  nickname: "메뚜기",
  mbti: "ISFP",
};

let user2: User = {
  id: 1,
  name: "박명수",
  nickname: "벼멸구",
  mbti: "ISTP",
};

 

인덱스 시그니처 (Index Signature)

객체 타입을 유연하게 정의할 수 있도록 돕는 특수한 문법이다.

type CountryCodes = {
  [key: string]: string;
};

let countryCodes: CountryCodes = {
  Korea: "ko",
  UnitedState: "us",
  UnitedKingdom: "uk",
};

 

인덱스 시그니처는 규칙을 위반하지만 않으면 모든 객체를 허용하기 때문에 아래와 같이 빈 객체에서도 오류를 발생시키지 않는다.

type CountryNumberCodes = {
  [key: string]: number;
};

let countryNumberCodes: CountryNumberCodes = {};

 

만약, 반드시 포함해야 하는 프로퍼티가 있다면 직접 명시하면 된다.

type CountryNumberCodes = {
  [key: string]: number;
  Korea: number; // 필수 프로퍼티
};

 

주의할 점은, 추가로 정의하는 프로퍼티의 value타입은 반드시 인덱스 시그니처의 value타입과 호환되어야 한다.

type CountryNumberCodes = {
  [key: string]: number;  // 모든 프로퍼티는 number 타입이어야 함
  Korea: string;          // ❌ 에러: string은 number와 호환되지 않음
};

 

올바른 예시

type CountryNumberCodes = {
  [key: string]: number;
  Korea: number;          // ✅ 정상: number 타입으로 호환됨
};

let countryNumberCodes: CountryNumberCodes = {
  Korea: 82,              // ✅ 정상
  USA: 1
};

'TIL' 카테고리의 다른 글

[TS] 타입 정의 연습  (0) 2025.10.28
[TS] 열거형 타입  (0) 2025.10.28
[TS] 객체 타입  (0) 2025.10.28
[TS] 배열과 튜플  (0) 2025.10.28
[TS] 원시타입과 리터럴 타입  (0) 2025.10.28
'TIL' 카테고리의 다른 글
  • [TS] 타입 정의 연습
  • [TS] 열거형 타입
  • [TS] 객체 타입
  • [TS] 배열과 튜플
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    App Router
    Pages Router
    Trouble Shooting
    react
    문자열
    useState
    C
    인터페이스
    클래스
    함수 타입
    배열
    CS
    ai 감성 일기장
    제네릭
    Spa
    트러블 슈팅
    typescript
    generic
    타입 좁히기
    자료구조
    바닐라 자바스크립트
    memory
    알고리즘
    페이지 라우터
    cs50
    algorithm
    앱 라우터
    Next.js
    javascript
    emotion diary
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 타입 별칭과 인덱스 시그니처
상단으로

티스토리툴바