Skip to content

rldnrl/internal-type

Repository files navigation

타입스크립트 내부 유틸리티 타입

Partial<T>

type Partial<T> = { [P in keyof T]?: T[P]; }

T의 모든 프로퍼티를 선택적으로 만드는 타입을 구성한다. 이 유틸리티는 주어진 타입의 모든 하위 타입 집합을 나타내는 타입을 반환한다.


Required<T>

type Required<T extends (...args: any) => any> = T extends (
  ...args: any
) => infer R
  ? R
  : any;

T의 모든 프로퍼티가 필수로 설정된 타입을 구성한다.


Readonly<T>

type Readonly<T> = { readonly [P in keyof T]: T[P]; }

T의 모든 프로퍼티를 읽기 전용(readonly)으로 설정한 타입을 구성한다. 즉 생성된 타입의 프로퍼티는 재할당할 수 없다.


Record<K, T>

type Record<K extends string | number | symbol, T> = { [P in K]: T; }

타입 T의 프로퍼티의 집합 K로 타입을 구성한다. 이 유틸리티는 타입의 프로퍼티들을 다른 타입에 매핑시키는 데 사용될 수 있다.


Pick<T, K>

type Pick<T, K extends keyof T> = { [P in K]: T[P]; }

T에서 프로퍼티 K의 집합을 선택해 타입을 구성한다.


Exclude<T, U>

type Exclude<T, U> = T extends U ? never : T

T에서 U에 할당할 수 있는 모든 속성을 제외한 타입을 구성한다.


Omit<T, K>

type Omit<T, K extends string | number | symbol> = {
  [P in Exclude<keyof T, K>]: T[P];
};

T에서 모든 프로퍼티를 선택한 다음 K를 제거한 타입을 구성한다.


Extract<T, U>

type Extract<T, U> = T extends U ? T : never

T에서 U에 할당 할 수 있는 모든 속성을 추출하여 타입을 구성한다.


NonNullable<T>

type NonNullable<T> = T extends null ? never : T

T에서 nullundefined를 제외한 타입을 구성한다.


Parameters<T>

type Parameters<T extends (...args: any) => any> = T extends (
  ...args: infer P
) => any
  ? P
  : never;

함수 타입 T의 매개변수 타입들의 튜플 타입을 구성한다.


ReturnType<T>

type MyReturnType<T extends (...args: any) => any> = T extends (
  ...args: any
) => infer R
  ? R
  : any;

함수 T의 반환 타입으로 구성된 타입을 만든다.


ConstructorParameters<T>

type ConstructorParameters<
  T extends abstract new (...args: any) => any
> = T extends abstract new (...args: infer P) => any ? P : never

ConstructorParameters<T> 타입은 생성자 함수 타입의 모든 매개변수 타입을 추출할 수 있게 해준다. 모든 매개변수 타입을 가지는 튜플 타입(T가 함수가 아닌 경우 never)을 생성한다.


InstanceType<T>

type InstanceType<
  T extends abstract new (...args: any) => any
> = T extends abstract new (...args: any) => infer R ? R : any

생성자 함수 타입 T의 인스턴스 타입으로 구성된 타입을 만든다.


ThisParameterType<T>

type ThisParameterType<T> = T extends (this: infer U, ...args: any[]) => any
  ? U
  : unknown;

함수 타입의 this 매개변수의 타입, 혹은 함수 타입에 this 매개변수가 없을 경우 unknown을 추출한다.

유의: 이 타입은 --strictFunctionTypes가 활성화되었을 때만 올바르게 동작합니다. #32964를 참고하세요.


OmitThisParameter<T>

type OmitThisParameter<T> = unknown extends ThisParameterType<T>
  ? T
  : T extends (...args: infer A) => infer R
  ? (...args: A) => R
  : T;

함수 타입에서 this 매개변수를 제거한다.

유의: 이 타입은 --strictFunctionTypes가 활성화되었을 때만 올바르게 동작합니다. #32964 참고하세요.


ThisType<T>

이 유틸리티는 변형된 타입을 반환하지 않는다. 대신, 문맥적 this 타입에 표시하는 역할을 한다.

유의: 이 유틸리티를 사용하기 위해선 --noImplicitThis 플래그를 사용해야 한다는 것을 유의하세요.

About

타입스크립트 내부 유틸리티 타입

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published