타입 별칭과 인덱스 시그니처
타입 별칭 (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