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);
문자열 배열열을 문자열 리터럴로 만드는 방법
는
와 같다.
문자열 리터럴에 따른 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;
분석하기
- Typescript 유틸리티 클래스 파헤치기. Utility Types Docs를 중점으로 | by Harry The Great | 해리의 유목코딩 | Medium
- In TypeScript, what do "extends keyof" and "in keyof" mean? - Stack Overflow
keyof 키워드
keyof 키워드는 타입 값에 존재하는 모든 프로퍼티의 키값을 union 형태로 리턴 받습니다.
never 타입
never는 에러가 발생했을 때 프로세스를 중단시키지 않고 무시하는 타입입니다. any를 제외한 다른 모든 타입의 원시 타입으로 사용 가능합니다. 타입이기는 하지만 실제 never 타입으로 변수를 선언할 수 없고 주로 함수의 리턴 타입으로 에러가 발생할 경우 에러를 무시하고 계속 진행시키는 역할을 합니다.