타입을 마치 변수처럼 정의하도록 도와주는 문법
중복 코드가 길어질 경우
type User = {
id: number;
name: string;
nickname: string;
birth: string;
bio: string;
location: string;
};
let user: User = {
id: 1,
name: "띠닝",
nickname: "ttining",
birth: "1999.99.99",
bio: "안녕하세요",
location: "서울",
};
let user2: User = {
id: 2,
name: "앙걸",
nickname: "mygirl",
birth: "1999.99.99",
bio: "안녕하세요",
location: "서울",
};
⚠️ 주의사항
동일한 스코프에 중복된 이름의 타입 별칭을 선언할 경우, 오류가 발생한다.
let countryCodes = {
Korea: "ko",
UnitedState: "us",
UnitedKingdom: "uk",
// ...
};
- 인덱스 시그니처 사용 ⭕
```tsx
type CountryCodes = {
[key: string]: string;
};
let countryCodes: CountryCodes = {
Korea: "ko",
UnitedState: "us",
UnitedKingdom: "uk",
};
type countryNumberCodes = {
[key: string]: number;
};
let countryNumberCodes = {
Korea: 410,
UnitedState: 840,
UnitedKingdom: 826,
};
```
- 규칙을 위반하지 않는다면, 모든 객체를 허용하는 타입이다.
```tsx
type countryNumberCodes = {
[key: string]: number;
};
let countryNumberCodes: countryNumberCodes = {}; // 오류 발생 ❌
// 아무런 프로퍼티가 없으므로, 규칙을 위반할 프로퍼티가 없다.
```