TypeScript 유틸리티 유형
소개
이 기사에서는 TypeScript 유틸리티 유형을 살펴보고 그 중요성을 설명하고 몇 가지 유용한 예제와 사용 사례를 포함합니다.
유틸리티 유형은 기존 유형을 새로 수정된 유형으로 변환transform
할 수 있는 기본 제공 유형입니다.
type A
가 있고 type B
에서 inherit
, modify
또는 exclude
속성을 가질 수 있는 새로운 type A
를 구성하고 싶다고 가정합니다.
여기서 type B = UtilityType<A, options>
는 사용할 유형을 나타내고 UtilityType
는 options
, inherit
또는 modify
등과 같이 수행할 작업 유형을 설명합니다.
Utility types aren't supported by primitives
except strings which offer Intrinsic String Manipulation Types
to manipulate strings.
Utility types are usually used with compound types such as Interfaces
and Union Types
.
시작하기 전에
TypeScriptplayground는 유틸리티 유형을 실험하기에 좋은 곳입니다. 주제에 대한 이해를 확고히 하기 위해 배운 내용을 연습하는 것이 좋습니다.
조합 유형
공용체 유형은 두 개 이상의 다른 유형으로 구성된 유형으로, 해당 유형 중 하나일 수 있는 값을 나타냅니다. 우리는 이러한 각 유형을 노동 조합의 구성원이라고 합니다.
Union 유형은 기본적으로exclude
두 가지 이상의 유형입니다.
공용체는 다음 유틸리티 유형을 지원합니다.
Utility types aren't supported by primitives
except strings which offer Intrinsic String Manipulation Types
to manipulate strings.
Utility types are usually used with compound types such as Interfaces
and Union Types
.
이 예제는 공용체와 함께 유틸리티 유형을 사용하는 방법을 보여줍니다.
Caveat: Union types are
case-sensitive
.
type ActivityType =
"Swimming"
| "Reading"
| "Coding"
| "Dancing"
| "Jogging";
1 - 추출
Union에 할당할 수 있는 모든 공용체 멤버를 Type에서 추출하여 유형을 생성합니다.
구문
combine
여기서
Extract<Type, Union>
는 초기 유형이고 Type
는 추출하려는 항목을 나타냅니다.데모
type CognitiveActivity = Extract<ActivityType, "Reading" | "Coding">;
// transformed type: "Reading" | "Coding"
const activity: CognitiveActivity = "Reading";
console.log(activity);
2 - 제외
ExcludedMembers에 할당할 수 있는 모든 공용체 멤버를 UnionType에서 제외하여 형식을 생성합니다.
구문
Union
여기서
Exclude<UnionType, ExcludedMembers>
는 초기 유형이고 UnionType
는 제외하려는 항목을 나타냅니다.데모
type PhysicalActivity = Exclude<ActivityType, "Reading" | "Coding">;
// transformed type: "Swimming" | "Dancing" | "Exercise";
const activity: PhysicalActivity = "Swimming";
console.log(activity);
유형 별칭 및 인터페이스
이 예제는 유형 별명 및 인터페이스와 함께 유틸리티 유형을 사용하는 방법을 보여줍니다.
Intersection types are types that combine properties from two or more types. They're usually used in conjunction with the following utility types.
일반적인 구문은
type A = {
};
type B = A & {
bKey: string;
}; // includes all the properties in A and B
type ElectronicDevice = {
name: string;
USBPorts: USBPORT[];
screenDimensions: Dimension;
buttons: Buttons[];
wifiConnectivity: boolean;
manufacturer: string;
memory: number;
}
이 유형은 전자 장치의 속성을 나타냅니다. 전자 장치는 모양과 크기가 다양하지만 버튼, 메모리, 포트 등과 같은 많은 핵심 기능을 공유합니다.
이 TypeScript에서 이 예제의 유형을 테스트할 수 있습니다playground.
1 - 선택
구문
ExcludedMembers
Type에서 속성 키(문자열 리터럴 또는 문자열 리터럴의 합집합) 집합을 선택하여 유형을 생성합니다.
데모
type Calculator = Pick<ElectronicDevice, "name" | "buttons"> & {
type: CalculatorType;
// own types
}
2 - 기록
구문
Pick<Type, Keys>
속성 키가 Keys이고 속성 값이 Type인 객체 유형을 생성합니다. 이 유틸리티는 유형의 속성을 다른 유형에 매핑하는 데 사용할 수 있습니다.
데모
type DeviceType = "Analogue" | "Digital";
type SmartPhone = Record<DeviceType, ElectronicDevice> & {
type: CalculatorType;
// own types
}
const blackberry: SmartPhone = {
Digital: {
}
}
3 - 생략
구문
Record<Keys, Type>
유형에서 모든 속성을 선택한 다음 키(문자열 리터럴 또는 문자열 리터럴의 합집합)를 제거하여 유형을 구성합니다.
데모
type StopWatch = Omit<ElectronicDevice, "wifiConnectivity" | "USBPorts">;
4 - 반환 유형
구문
Omit<Type, Keys>
함수 Type의 반환 유형으로 구성된 유형을 구성합니다.
데모
const getUserByActivity = async (type: string) => {
const response = await apiCall(url, params); // fake api call
return response.data;
}
type NewUser = ReturnType<typeof getUserByActivity>
const user: NewUser = getUserByActivity(activity.type);
참조:
Reference
이 문제에 관하여(TypeScript 유틸리티 유형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/junubiman/typescript-utility-types-am6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)