Skip to content

TypeScript:UtilityTypes

TypeScript는 일반적인 유형 변환을 용이하게 하는 여러 유틸리티 유형을 제공합니다. 이러한 유틸리티는 전 세계에서 사용할 수 있습니다.

Awaited<Type>

Partial<Type>

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

Required<Type>

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

Readonly<Type>

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

Record

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

Pick

Type에서 프로퍼티 Keys의 집합을 선택해 타입을 구성합니다.

Omit

Type에서 모든 프로퍼티를 선택한 다음 Keys를 제거한 타입을 구성합니다.

Exclude

UnionType에서 ExcludedMembers에 할당할 수 있는 모든 속성을 제외한 타입을 구성합니다.

Extract

Type에서 Union에 할당 할 수 있는 모든 속성을 추출하여 타입을 구성합니다.

NonNullable<Type>

Type에서 null 과 undefined를 제외한 타입을 구성합니다.

Parameters<Type>

함수 타입 Type의 매개변수 타입들의 튜플 타입을 구성합니다.

ConstructorParameters<Type>

생성자 함수 타입의 모든 매개변수 타입을 추출할 수 있게 해줍니다. 모든 매개변수 타입을 가지는 튜플 타입(Type가 함수가 아닌 경우 never)을 생성합니다.

ReturnType<Type>

함수 Type의 반환 타입으로 구성된 타입을 만듭니다.

InstanceType<Type>

생성자 함수 타입 Type의 인스턴스 타입으로 구성된 타입을 만듭니다.

ThisParameterType<Type>

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

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

OmitThisParameter<Type>

함수 타입에서 'this' 매개변수를 제거합니다.

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

ThisType<Type>

이 유틸리티는 변형된 타입을 반환하지 않습니다. 대신, 문맥적 this타입에 표시하는 역할을 합니다. 이 유틸리티를 사용하기 위해선 --noImplicitThis 플래그를 사용해야 한다는 것을 유의하세요.

Intrinsic String Manipulation Types

Uppercase<StringType>

Lowercase<StringType>

Capitalize<StringType>

Uncapitalize<StringType>

특정 인스턴스에서 전체 키 목록을 가져오는 방법

export const appPaths = {
  login: '/login',
  loginPkceError: '/login/pkce/error',
  passwordResetUpdate: '/password/reset/update',
};

const propsArray = Object.keys(appPaths) as Array<keyof typeof appPaths>;
console.debug(propsArray);

문자열 배열열을 문자열 리터럴로 만드는 방법

const arr = ["aaa", "bbb", "ccc"] as const;
type myCustomType = typeof arr[number];

type myCustomType = "aaa" | "bbb" | "ccc";

와 같다.

문자열 리터럴에 따른 interface 프로퍼티 타입 변경

interface PreferenceFieldCommon {
  key: string;
  label?: string;
  detail?: string;
}

type PreferenceFieldSpecialize =
  | {
      type: 'text';
    }
  | {
      type: 'select';
      options?: Array<SelectOptions>;
    }
  | {
      type: 'radio';
      options?: Array<RadioOptions>;
    };

export type PreferenceField = PreferenceFieldCommon & PreferenceFieldSpecialize;

분석하기

keyof 키워드

keyof 키워드는 타입 값에 존재하는 모든 프로퍼티의 키값을 union 형태로 리턴 받습니다.

never 타입

never는 에러가 발생했을 때 프로세스를 중단시키지 않고 무시하는 타입입니다. any를 제외한 다른 모든 타입의 원시 타입으로 사용 가능합니다. 타입이기는 하지만 실제 never 타입으로 변수를 선언할 수 없고 주로 함수의 리턴 타입으로 에러가 발생할 경우 에러를 무시하고 계속 진행시키는 역할을 합니다.

See also

Favorite site