교육 (Today I Learned)/Hanaro

[Hanaro] 22일차 / TypeScript (선언 파일과 구성 및 옵션, 타입 운영, 유틸리티 타입)

Bay Im 2024. 2. 15. 17:43

TypeScript - 선언 파일과 구성 및 옵션

  • global 전역 변수
    • import, export가 없거나 declare global이면 전역
    • 전역 어디서나 import 없이 사용 가능
    • window 등 전역 객체에 타입 정의 가능
  • declare
    • 오직 선언만 한다. 값(초기값)은 허용되지 않는다. (literal type은 가능)
  • 타입 검사(Type Checker)
    • lib
      • 브라우저에서 실행되지 않는 경우 DOM, condole 등을 제거
    • skipLibCheck
      • 사용되지 않은 소스에서의 선언은 선언 파일 타입 체크도 생략
    • strict
      • noImplicitAny, strictNullChecks, strictFunctionTypes 모두 활성화
    • 기타
      • checkJs with alloHs
      • “extends”: “../tsconfig.base.json”
      • outDir

 

TypeScript - 타입 운영

  • Mapped Typed
    • 다른 타입을 가져와서 해당 타입의 각 속성에 대해 일부 작업 수행
    • 존재하는 타입에 keyof 연산자를 사용해 키를 가져오는 방식
    • 존재하는 타입의 키를 매핑하도록 타입에 지시하면 새로운 타입으로 매핑
  • Mapped Type - never
    • 유니언에서 never은 무시된다.
    • Mapped Type은 타입의 멤버를 매핑할 수 있다.
    • 조건부 타입은 조건이 충족되는 경우 타입을 never로 변환하는 데 사용할 수 있다.
  • Conditional Type - 조건부 타입
    • condition ? trueExpression : falseExpression 형식의 조건부 타입
    • 함수에 제공된 옵션 객체를 기반으로 함수의 반환 타입을 변경하는데 유용
    • 제네릭 타입에 유니언 타입을 제공하는 경우 결과 타입은 각 구성 요소에 조건부 타입을 적용하는 유니언이 된다.
  • Conditional type - never
    • never은 유니언에서 무시되기 때문에 유니언 타입에서 제네릭 조건부의 결과는 never가 아닌 것이 된다.
      • never & SomeType ⇒ never
      • never | SomeType ⇒ SomeType
  • Template Literal Type
    • 문자열이 일부 문자열 패턴과 일치함을 나타내고 싶을 때 사용할 수 있다. (primitive 타입만 사용 가능, Symbol 불가)

 

TypeScript - 유틸리티 타입

  • Utility Types
    • 타입 변환을 쉽게 하기 위하여 유틸리티 타입 제공 (전역 사용)
  • Utility Types 종류
    • Awaited<T>
      • Promise<T> 형태의 타입을 전달 받아서 해당 Promise가 반환하는 리턴값의 타입을 반환
    • Omit<T, U>
      • T 타입에서 2번째 인자로 전달한 U 유니온에 지정된 키만 프로퍼티로 갖지 않는 새로운 타입 반환
    • Pick<T, U>
      • T 타입에서 2번째 인자로 전달한 타입에 지정된 키만 프로퍼트로 갖는 새로운 타입을 반환
    • Partial<T>
      • T 타입의 일부 프로퍼티만 가질 수 있는 타입을 반환
    • Required<T>
      • T 타입의 모든 프로퍼티를 필수로 갖는 타입을 반환
    • Record<K, T>
      • K 키로, T 타입으로 하는 새로운 타입 반환
    • Parameters<T>
      • 함수 타입 T의 매개변수 타입을 튜플 형태로 반환
    • ReturnType<T>
      • 함수 타입 T의 리턴 타입 유형 반환