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

타입 별칭 (Type Alias)

타입정의를 변수처럼 하도록 도와주는 것


type User = {
  id: number;
  name: string;
  birth : string
  location : string
}

let user : User{
} = {
  id: 1,
  name: "신봄",
  birth: "1989.02.12",
  location: "서울",
};

function func() {
  type User = {}
  // func 스코프 안의 User타입
}

동일한 스코프에 중복될 수 없음.


인덱스 시그니쳐(Index Signature)

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

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

인덱스 시그니처를 사용 시, 객체를 정의할 때 키와 타입의 규칙을 기준으로 타입을 정의할 때 유용함.

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

let countryNumbercodes: CoutryNumberCodes = {
  Korea: 410,
  UnitedState: 840,
  UnitedKingdom: 826,
};

인덱스 시그니처는 규칙을 위반하지만 않으면 오류가 발생되지 않는다.

꼭 필요한 property가 있을 경우에는 아래와 같이 타입을 선언하면 된다.

type CoutryNumberCodes = {
  [key: string]: number;
  Korea: number;
};

type CoutryNumberAndStringCodes = {
  [key: string]: number; // 오류 발생[string 할당할 수 없음]
  Korea: string;
};

인덱스 시그니처와 프로퍼티의 타입을 선언할때에는 인덱스 시그니처의 타입이 프로퍼티의 타입을 호환해야 한다.

Last updated