타입스크립트 정리

Janny·2023년 3월 24일
0

기본 타입들

  • void: 함수에서 아무것도 반환하지 않을 때 사용
  • never: 항상 error 를 반환하거나, 영원히 끝나지 않는 함수의 타입으로 사용
  • enum: 비슷한 값들끼리 묶음. 특정값만 입력할 수 있게 하고 싶을 때, 값들끼리 공통점이 있을 때 사용.
  • null: 비어있는, 존재하지 않는 값.
  • undefined: 아무값도 할당받지 않은 상태.

인터페이스 (interface)

: property를 정해서 객체를 표현하고자 할 때 쓴다.

interface User {
      name: string;
      age: number;
      gender?: string; // 선택적 매개변수, optional 한 것을 적용시 사용. (기본값 적용 불가)
      read only birthYear: number; // 읽기 전용 속성
      [grade: number]: string;
	}

인터페이스로 함수와 클래스도 정의할 수 있다.

함수

... ➡️ rest parameter (나머지 매개변수)는 표현 시 ...nums: number[]
오버로드 사용 ➡️ 동일한 함수지만 매개변수의 타입이나 갯수에 따라 다른 방식으로 동작해야한다면 사용

리터럴, 유니온/교차 타입

  • 리터럴타입(literal type)
    문자열 리터럴타입: 정해진 스트링값을 가진 것
    숫자형 리터럴타입: 정해진 숫자 값을 가진 것
  • 유니온 타입(union type) |
    식별 가능한 유니온타입: 동일한 속성의 타입을 다르게해서 구분할 수 있는 것
  • 교차 타입(intersection type) &
    여러개의 타입을 하나로 합쳐 줌. 모든 속성을 다 기입해줘야 함.

클래스 (class)

접근 제한자(access modifier)

  • public: 자식 클래스나 클래스 인스턴스에서 접근✅, 아무것도 표기하지 않고 적으면 모두 public
  • private: 가장 제한적, 자식 클래스와 클래스 인스턴스에서 사용❎, 해당 클래스 내부에서만 사용✅
  • protected: 자식 클래스에서 접근✅, 클래스 인스턴스에서 사용❎

read only: 읽기 전용, constructor로 수정가능
static: 정적 멤버변수나 메서드는 this나 클래스명을 적어준다.
추상 class: 클래스명 앞에 abstract 키워드를 붙여 줌. new를 이용해 객체를 만들 수 없다. 상속을 통해서만 사용 가능. 정의만 있을 뿐, 몸통이 구현된 게 없다. 추상 클래스 내부에 추상 메서드는 반드시 상속 받은 곳에서 구체적인 구현을 해야 함.

⭐️추상화: property나 메서드의 이름만 선언해주고, 구체적인 기능은 상속받는 쪽에서 구현해주는 것.
➡️ 동일한 이름을 가질 수 있지만, 구체적인 기능은 다 다를 수 있다

제너릭

class, 함수, interface를 다양한 타입으로 재사용하게 함.
선언할 때는 type parameter만 적어주고 생성하는 시점에 사용하는 type을 결정하는 것.
대표적인 예시 <T> type을 뜻하는 T를 주로 쓴다.

유틸리티 타입

keyof: 인터페이스의 key 값들을 유니언 형태로 받을 수 있다.
Partial<T>: property를 모두 optional 하게 만들어 준다. 일부만 사용하는 걸 가능하게 함. ( ↔️ Required<T>)
Readonly<T>: 읽기 전용으로 만듬
Record<K, T>: 타입의 프로퍼티의 집합 K로 타입을 구성
Pick<T, K>: 타입에서 프로퍼티 K의 집합을 선택해 타입을 구성 ( ↔️ Omit<T, K>: 프로퍼티들을 제거)
Exclude<T1, T2>: 타입으로 제거 (T1 중에 T2 값을 제거)
NonNullable<T>: null 과 undefined를 제외시킴

profile
🐣병아리 개발자의 기록을 위한 공간

0개의 댓글