TypeScript 추출 유형의 작동 방식
Extract
유틸리티 유형을 사용하면 특정 구성원에 대한 공용체 유형을 확인할 수 있으며 남은 항목에 따라 새 유형을 반환합니다. 꽤 similar in format to the Exclude type .어떻게 작동하는지 알아봅시다.
유틸리티 유형
유틸리티 유형은 특정 문제를 해결하기 위해 TypeScript에 정의된 유형입니다. TypeScript에서 사용자 정의 유형을 처음 정의하는 경우 my guide on defining custom types here 을 읽어보십시오.
TypeScript에서 추출 유형이 작동하는 방식
TypeScript에서는 공용체 유형이라는 특정 유형을 정의할 수 있습니다. 공용체 유형은 가능한 값의 목록입니다. 예를 들면 다음과 같습니다. 여기서 myUnionType 유형은 변수를 의미하고 기타 출력은 🥒, 🥔, 🌶 또는 🌽의 네 가지 값 중 하나일 수 있습니다.
type myUnionType = "🥒" | "🥔" | "🌶" | "🌽"
// This works since 🥒 is a member of "🥒" | "🥔" | "🌶" | "🌽"
let myFirstVariable:myUnionType = "🥒"
// This doesn't work since "my-string" is NOT member of "🥒" | "🥔" | "🌶" | "🌽"
let mySecondVariable:myUnionType = "my-string"
추출 유형
공용체 유형에서 특정 요소를 제거하려면 Exclude Type을 사용할 수 있지만 공용체 유형을 조작할 수 있는 다른 방법이 있습니다.
Extract Type을 사용하면 새 목록을 정의할 수 있으며 해당 목록의 항목이 원래 유형에 있는 경우 새 유형을 반환합니다.
간단한 예를 살펴보겠습니다.
type myUnionType = "🥒" | "🥔" | "🌶" | "🌽"
let myFirstVariable:Extract<myUnionType, "🥒" | "🥔"> = "🥒"
// ^
// └ - - Type is "🥒" | "🥔"
Extract를 작성할 때 Extract는
"🥒" | "🥔"
에 대해 myUnionType을 확인합니다. 존재하는 경우 존재하는 항목을 포함하는 새 유형을 만듭니다. 🥒과 🥔이 모두 유니온 유형에 존재하므로 새로운 유형"🥒" | "🥔"
으로 끝납니다.Extract
문에서 원래 공용체 유형에 존재하지 않는 구성원을 정의하면 새 유형에서 무시됩니다. 예를 들어:type myUnionType = "🥒" | "🥔" | "🌶" | "🌽"
let myFirstVariable:Extract<myUnionType, "🥒" | "🥔" | "🍇"> = "🥒"
// ^
// └ - - Type is STILL "🥒" | "🥔" since "🍇" is not in myUnionType
Extract를 사용해도 원본 유형에는 영향을 주지 않으므로 원하는 경우 계속 사용할 수 있습니다.
type myUnionType = "🥒" | "🥔" | "🌶" | "🌽"
let myFirstVariable:Extract<myUnionType, "🥒" | "🥔" | "🍇"> = "🥒"
// ^
// └ - - Type is "🥒" | "🥔"
let mySecondVariable:myUnionType = "🌶"
// ^
// └ - - Type is "🥒" | "🥔" | "🌶" | "🌽"
따라서 추출은 특정 변수 또는 출력에 대해 정의된 멤버의 집합 수로 원래 공용체 유형을 제한하려는 경우 훌륭한 도구입니다. 코드의 어느 곳에서나 사용할 수 있는 즉석에서 유형을 정의할 수 있는 유연성을 제공합니다.
Reference
이 문제에 관하여(TypeScript 추출 유형의 작동 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smpnjn/how-the-typescript-extract-type-works-26b0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)