타입 별칭 (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 |
