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 "🥒" | "🥔" | "🌶" | "🌽"


따라서 추출은 특정 변수 또는 출력에 대해 정의된 멤버의 집합 수로 원래 공용체 유형을 제한하려는 경우 훌륭한 도구입니다. 코드의 어느 곳에서나 사용할 수 있는 즉석에서 유형을 정의할 수 있는 유연성을 제공합니다.

좋은 웹페이지 즐겨찾기