
: 타입을 변수처럼 정의하여 사용
(공통적으로 계속 사용되어야 하는 타입을 정의할 때 사용)

위 코드처럼 변수를 정의해뒀는데, 같은 속성을 가진 변수를 추가적으로 만들면, 공통적인 코드를 여러번 작성해야 하는 상황이 발생한다.
ex) user1, user2... 변수들을 만들었는데 속성이 같아서 속성 type을 정의하는 코드를 여러번 복사붙여넣기 해야 할 때
따라서 타입을 변수처럼 지정해서 사용할 수 있게 하여 코드의 중복을 제거하면 된다. (타입 별칭 사용)

type User = {
id: number;
name: string;
nickname: string;
birth: string;
bio: string;
location: string;
}
이렇게 type을 정의하고,
User라는 타입 명을 입력해주면 된다.
let user: User = {
id:1,
name: "정혜인",
nickname: "happyhyep",
birth: "2002.10.01",
bio: "안녕하세요",
location: "포항",
};
let user2: User = {
id:2,
name: "홍길동",
nickname: "abc",
birth: "2002.01.01",
bio: "안녕",
location: "서울",
};
✔️ 동일한 스코프에서 중복되지 않게 해야함
: key와 value의 규칙을 기준으로 객체의 타입을 정의할 수 있는 문법

위 코드처럼 key: country name - value: country code를 지정해주려고 할 때, 훨씬 많은 나라들이 있으면 그 나라들의 속성 하나하나 입력할 수 없기 때문에,
객체의 property와 value에 타입 관련된 규칙을 활용하여 타입을 만들어주면 된다.
(key: string, value: string)
key : value가 string : string 형식인 경우

key : value가 string : number 형식인 경우
type CountryCodes = {
[key: string] : number;
}
let countryCodes: CountryCodes = {
Korea: 1,
UnitedState: 2,
UnitedKingdom: 3,
}

위 코드처럼 Korea: number;을 추가해주면, Korea라는 속성은 무조건 있어야 한다는 의미가 된다.
위 코드 위, 아래 두개의 value의 type은 일치해야 한다.