본문 바로가기

TypeScript

타입,유틸리티 타입

❔타입을 왜 제대로 알아야 하는가 ❕

  1. 코드의 가독성과 안정성 향상
  2. 타입 안정성 : 코드가 예상한 타입대로 동작을 보장
  3. TS: 정적 타입 시스템 도입

 

- 기본 타입 훑어 보기-

  • boolean : true/false   * 3가지 이상의 상태를 표현하고 싶을 때는 enum 혹은 string
  • number
  • 튜플 : 서로 다른 타입의 원소를 순서에 맞게 가질 수 있는 배열

ex)

const person = [string,number,boolean]
const person = [spartan,25,false]
  • const , readonly 

readonly : typescript에서 객체의 속성을 불변으로 만드는데 사용한다. readonly는 const로 치환할 수 없다.

  • any, unknown, union
  1. any 타입 : 어떤 타입의 값이든 저장할 수 있다. * 코드의 안정성과 유지보수성 저해할 수 있음.
  2. unknown타입 : any타입과 비슷하지만 그 값을 다른 타입의 변수에 할당하려면 타입을 확인해야 한다. 

       ⭐ 재할당 시 타입 체크를 함으로써 안전함이 보장되지만, 재할당이 일어나지 않으면 타입 안정성을 보장 할 수 없다.


3. union타입 : 여러 타입 중 하나를 가질 수 있는 변수를 선언할 때 사용한다. 여러 타입을 결합하여 표현함! 

 

  • enum,object literal
  1. enum : 간단한 상수값.

                   - 열거형 데이터 타입

                   - 상수의 그룹화에 적합

                   - 코드의 가독성을 높이고 명화한 상수값 정의

                   - 컴파일 시에 자동으로 숫자 값으로 매핑 : 따로 값을 할당할 필요가 없다.

 

    2. object literal : 복잡한 구조 + 다양한 데이터 타입 (키+값 pair)

        * 어떤 타입의 값도 대입 가능하다 ( enum 각 멤버는 상수이므로 number, string 타입 값만 대입 가능하다.)

                   - 다양한 데이터 타입 지원, 유연한 구조

                   - 런타임 에러 방지 ( 코드 내에서 사용하기 전에 할당한다)

enum object literal
간단한 상수값을 그룹화해서 관리할 때 멤버의 값이나 데이터 타입을
마음대로 변경할 수 있음
-> 각 멤버의 값이 변하면 안된다 복잡한 구조, 다양한 데이터 타입

 

<유틸리티 타입>

- partial<T>

:타입 T의 모든 속성을 선택적으로 만듦

 

- required<T>

: 타입 T의 모든 속성을 필수적으로 만듦

 

- readonly<T>

: 타입 T의 모든 속성을 읽기 전용으로 만듦

 

- pick<T,K>

: 타입 T에서 K 속성들만 선택하여 새로운 타입을 만듦

          ↕️

- omit<T,K>

: 타입 T에서 K속성들만 제외