TypeScript의 공용체 유형에서 지도 객체 유형을 만드는 방법은 무엇입니까?
6872 단어 typescript
공용체 유형에서 간단한 지도 객체 유형을 만들려면 TypeScript에서
in
syntax과 함께 Index Signature
연산자를 사용할 수 있습니다.TL; DR
// String literal union type
type Colors = "blue" | "green" | "red" | "yellow";
// make a map object type from `Colors` union type
// we are using the `in` operator inside the
// `Index Signature` syntax brackets to iterate though
// every values in the union type and assign
// that value as the key in the object type
type MapObjectType = { [Color in Colors]: string };
// if you hover the `MapObjectType` type you will see this 👇🏽
/*
type MapObjectType = {
blue: string;
green: string;
red: string;
yellow: string;
}
*/
예를 들어,
Colors
, strings
, blue
, green
와 같은 red
로 구성된 yellow
라는 문자열 리터럴 합집합 유형이 있다고 가정해 보겠습니다.// String literal union type
type Colors = "blue" | "green" | "red" | "yellow";
이제 지도 객체의
Colors
가 key
합집합 유형의 값 중 하나여야 하는 위의 Colors
문자열 리터럴 합집합 유형에서 지도 객체 유형을 만들겠습니다.이렇게 하려면 다음과 같이
in
syntax 내부의 Colors
공용체 유형에 Index Signature
연산자를 사용해야 합니다.// String literal union type
type Colors = "blue" | "green" | "red" | "yellow";
// make a map object type from `Colors` union type
// we are using the `in` operator inside the
// `Index Signature` syntax brackets to iterate though
// every values in the union type and assign
// that value as the key in the object type
type MapObjectType = { [Color in Colors]: string };
위의 코드에서 볼 수 있듯이
in
연산자와 대괄호 안에 Colors
유형을 사용했습니다(일명 Index Signature
구문). in
연산자는 공용체 유형의 모든 값을 반복하고 해당 값을 Color
에 할당하여 해당 값을 가진 개체에 대한 키 유형을 생성합니다. 또한 우리의 경우 키의 속성 값에 대해 string
유형을 제공했습니다. 속성에 유효한 모든 유형을 가질 수 있습니다.이제
MapObjectType
유형 위로 마우스를 가져가면 Colors
유형의 모든 색상으로 구성된 지도 객체 유형이 생성된 것을 볼 수 있습니다. 이는 정확히 필요한 것입니다.다음과 같이 보일 것입니다.
// String literal union type
type Colors = "blue" | "green" | "red" | "yellow";
// make a map object type from `Colors` union type
// we are using the `in` operator inside the
// `Index Signature` syntax brackets to iterate though
// every values in the union type and assign
// that value as the key in the object type
type MapObjectType = { [Color in Colors]: string };
// if you hover the `MapObjectType` type you will see this 👇🏽
/*
type MapObjectType = {
blue: string;
green: string;
red: string;
yellow: string;
}
*/
TypeScript의 공용체 유형에서 맵 객체 유형을 성공적으로 만들었습니다. 예이 🥳!
codesandbox에 있는 위의 코드를 참조하십시오.
그게 다야 😃!
이 정보가 유용하다고 생각되면 자유롭게 공유하세요 😃.
Reference
이 문제에 관하여(TypeScript의 공용체 유형에서 지도 객체 유형을 만드는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/melvin2016/how-to-make-a-map-object-type-from-a-union-type-in-typescript-55ia텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)