타입 이해하기

정승옥(seungok)·2021년 4월 17일
0

타입스크립트

목록 보기
3/4
post-thumbnail

🤜 any & unknown

  • anyunknown 모두 타입에 대한 정보가 없을 때 여러 타입들을 허용할 수 있기 때문에 사용한다.
  • 둘의 차이점은 any 의 경우 타입 정보를 제공하지 않아도 되지만 unknown 의 경우 타입 정보를 제공하지 않을 경우 에러가 발생한다.

  • 타입 정보를 제공하거나 강제로 지정(단언)하는 방법으로 에러를 해결할 수 있다.
  • 특히 any 의 경우 남용하여 사용하게 되면 타입스크립트의 사용 목적을 잃어버리기 때문에 특별한 경우가 아니라면 최대한 사용을 지양해야한다.

🤜 void & never

  • void함수의 반환값이 없을 경우 반환값에 대한 타입으로 사용한다.
  • never논리적으로 도달할 수 없는 함수의 반환값에 대한 타입으로 사용한다.
  • 에러 객체를 던져 에러가 발생할 경우 애플리케이션이 작동을 멈추기 때문에 함수에서 반환할수 없는 경우, while 문의 무한 루프로 코드가 끝나지 않는 경우 never 타입을 사용할 수 있다.

🤜 tuple

  • tuple 은 원소의 갯수가 정해진 배열의 타입으로 정해진 위치의 갯수만큼 원소를 표시하는데 사용한다.
  • number 타입의 인덱스로 접근하기 보다 비구조 할당을 통해 선언된 변수로 접근하는 방식이 가독성이 좋다.
  • 원소의 갯수가 정해지지 않았다면 spread 와 배열에 대한 타입을 명시해준다.

핵심 타입 ✅

✅ type alias

  • type alias 를 통해 새로운 타입을 직접 명시할 수 있다.
  • 객체 타입인 경우 속성의 key 문자열과 value의 타입이 동일해야한다.

  • 문자열 리터럴 타입은 지정한 문자열 외에 다른 문자열을 할당할 경우 에러가 발생한다.
  • 문자열을 입력할때 지정한 문자열을 자동으로 보여준다.

✅ union type

  • 유니언 타입은 다중 타입으로 여러 타입에 대해 OR 연산자와 같이 또는 의 의미를 가지고 | 연산자를 사용한다.
  • type alias 를 통해 만든 타입들을 유니언 타입으로 활용할 수 있다.
  • 로그인 성공, 실패에 대한 두 가지 타입을 LoginState 유니언 타입으로 관리할 수 있다.

  • loginCheck 함수는 Promise 객체를 반환하고 실행되는 함수의 매개변수에 대한 타입이 LoginState 유니언 타입으로 지정한다.
  • 성공, 실패 타입에 result 라는 동일한 속성에 다른 문자열 리터럴 타입으로 구분 지을 수 있다.
  • 위 코드에서는 resolve , reject 함수로 분리하여 작성했지만 resolve로 모두 작성했을 경우 res.result 목록에 success, fail 모두 확인할 수 있다.

⛔️ intersection type

  • 유니언 타입이 OR 연산자의 역할을 했다면 intersection typeAND 연산자의 역할을 한다.
  • & 연산자를 사용하며 명시된 여러 타입들이 모두 만족을 해야 에러가 발생하지 않는다.
  • name, age 를 가지고 있는 Student 타입employId , work 를 가지고 있는 worker 타입 을 모두 만족하는 객체만 internWork 함수 의 인자로 전달해야한다.

🤜 enum

  • enum상수값들을 한 곳에 모아 정의하는 기능을 제공하는 타입이다.
  • 자바스크립트에서는 이 기능을 제공하지 않기 때문에 타입스크립에서 자체적으로 제공하는 타입이다.
  • enum 으로 선언한 타입의 변수는 타입 안에 선언된 다른 값들을 재할당할 수 있는 장점이 있다.
  • 하지만 number 타입 경우 안에 명시된 값 외에 다른 값을 할당할 수 있다는 문제점이 있다.
  • 유니온 타입enum 과 같은 역할을 하면서 동시에 타입을 보장하기 때문에 enum 보다는 유니온 타입을 권장한다.
profile
Front-End Developer 😁

0개의 댓글

관련 채용 정보