타입 별칭(Type Alias)


타입 별칭을 이용하면 다음과 같이 변수를 선언하듯 타입을 별도로 정의할 수 있음

// 타입 별칭
type User = {
  id: number;
  name: string;
  nickname: string;
  birth: string;
  bio: string;
  location: string;
};
...

→ type 타입_이름 = 타입 형태로 타입을 정의함.

→ 위 코드는 타입 이름으로는 User 그리고 타입으로는 여러 개의 프로퍼티가 있는 개체 타입을 정의함

이렇게 만든 타입 별칭은 다음과 같이 변수의 타입을 정의할 때 타입 주석과 함께 이용할 수 있음

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

let user: User = {
    id: 1,
    name: ""문동민",
    nickname: "moon",
    birth: "2000.10.08",
    bio: "안녕하세요",
    location: "대전광역시",
};

let user2: User = {
    id: 2,
    name: "홍길동",
    nickname: "winterlood",
    birth: "1997.01.07",
    bio: "안녕하세요",
    location: "부천시",
};

참고로 동일한 스코프에 동일한 이름의 타입 별칭을 선언하는 것은 불가능함. 마치 변수 선언과 유사함

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

type User = {} // error

하지만 스코프가 다르면 다음과 같이 중복된 이름으로 여러개의 별칭을 선언해도 상관 없음

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

function test() {
  type User = string;
}

→ test 함수 내부에서는 User가 string 타입 / test 함수 바깥에서는 User가 객체 타입이 됨

인덱스 시그니처(Index Signature)


인덱스 시그니처는 객체 타입을 유연하게 정의할 수 있도록 돕는 특수한 문법