[Typescript] 타입 별칭과 시그니처

정혜인·2023년 8월 2일

typescript

목록 보기
8/15
post-thumbnail

✍️타입 별칭 (type alias)

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

위 코드처럼 변수를 정의해뒀는데, 같은 속성을 가진 변수를 추가적으로 만들면, 공통적인 코드를 여러번 작성해야 하는 상황이 발생한다.
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은 일치해야 한다.

0개의 댓글