TypeScript - 타입 별칭

Seung min, Yoo·2021년 5월 7일
0
post-thumbnail

typealias

1. 인터페이스와 비슷하지만 우리가 직접 작성한 타입에 이름을 붙일 수 있다.

interface User {
  name: string;
}
interface Action {
  do(): void
}

type UserAction = User & Action;
function createUserAction () : UserAction {
  return do() {
    do() {},
    name: ''
  }
}
type StringOrNumber = string | number;

2. 타입별칭은 Generic도 사용가능하다

type Arr<T> = T[];
// 제너릭을 이용해서 Arr이라는 타입은 타입파라미터 T를 받아서 T에 해당하는 배열의 타입을 가르키게 된다.
type P<T> = Promise<T>;
//기존에 만들었던 타입들을 유니온이나 intersection타입이나 다양한 타입들로 구성한 것들에 이름을 부여할 수 도 있고,원시형 타입도 가능하고 기존에 있는 타입을 이름만 바꾸거나 단축시켜서 표현할 수 있다.

3. 이름뿐만 아니라 interface처럼 심지어 특정 타입을 정의할 수도 있다.

type User2 = {
  name: string;
  login(): boolean;
}

class UserImpl implements User2 {
  name: string;
  
  login(): boolean {
  throw new Error("Method not implemented.");
  }
}
//interface가 아님에도 불구하고 implements가 가능하다.

4.문자열리터럴 타입과 같이 활용하게 되면 유용하게 사용할 수 있다.

type User2 = {
  name: string;
  login(): boolean;
}

class UserImpl implements User2 {
  name: string;
  
  login(): boolean {
  throw new Error("Method not implemented.");
  }
}

type UserState = "PENDING" | "APPROVED" | "REJECTED";
//상태에 대한 문자열들에 대해서 유니온타입으로 가져간다.

function checkUser(user: User2): UserState {
  if(user.login()) {
    return "APPROVED";
  } else {
    return "REJECTED";
  }
}
//예를 들면 유저를 검사를 하는데 유저를 검사하면서 나온 상태를 반환해야 한다면 유저의 상태중 하나가 리턴되게 할 수 있다.
profile
이제 막 개발을 시작한 프로그래밍 입문자

0개의 댓글