TIL(22.05.19)

김부건·2022년 5월 19일
1

TIL

목록 보기
8/10
post-thumbnail

Typescript Enum type

Enum 타입(열거형 타입)은 주로 상수들의 집합을 정의하는데 사용한다. Enum 타입을 이용하면 의도를 문서화하거나 특정 그룹으로 구분되는 집합을 더 쉽게 만들어서 관리할 수 있다. 숫자열거형과, 문자열열거형 타입을 제공한다.

Numeric enums

enum Food {
  pizza,
  chicken,
  hamburger,
}

초기화없이 사용할 경우 가장 첫번째 값으로 0부터 차례대로 대입된다.(pizza=0, chicken=1, hamburger=2) 원하는 값이 있으면, 선언적으로 값을 대입할수있는데, 따로 값을 대입하지 않으면 +1씩 자동으로 증가한다.

enum Food {
  pizza = 3,
  chicken = 100,
  hamburger, // 101
}

사용법은 간단한데, 열거형 자체에서 프로퍼티로 접근해서 사용하면 된다.

enum Role {
  ADMIN,
  READ_ONLY,
  AUTHOR
}

const person = {
  name: 'GOD',
  age: 10001,
  role: Role.ADMIN
}

if (person.role === Role.ADMIN) {
  console.log('is admin!');
}

String enums

문자열 열거형도 사용이 가능하다. 대신 숫자형처럼 자동으로 증가하는 기능은 없다. String enum 타입이 Numeric enum 타입보다 좋은 점은 직렬화가 잘 되어 있어서, 의미를 바로 알 수 있다는 점이다.(숫자만으로는 이게 뭘 뜻하는지 알기 어려울수도 있음)

enum Direction {
  UP = 'UP',
  DOWN = 'DOWN',
  LEFT = 'LEFT',
  RIGHT = 'RIGHT'
}

제네릭 타입(Generic type)

설명을 뭐라고 해야할지 모르겠다..

function getParam<Type>(arg: Type): Type {
  return arg;
}

const myGetParam: <Type>(arg: Type) => Type = getParm;

getParam 함수는 제네릭 타입으로 정의된 함수이다. 제네릭 타입이 애니와 다른점은 만일 Type대신에 any를 사용했다면, 인수로 number타입이 들어와도 리턴 값으로 string 타입등 다른 타입을 반환해도 상관이 없다. 하지만 제너릭 타입을 사용하게 되면 유저가 넘긴 인수의 타입을 캡처하고, 이 정보를 반환 타입으로 다시 사용할 수 있게 된다.(즉, 인수와 리턴의 타입이 같다는 것을 보장)

const promise: Promise<string> = new Promise((resolve, reject)=> {
  setTimeout(() => {
  	resolve('Finished');
  }, 1500);
});

0개의 댓글