본문 바로가기

React Props 제한하기: & 와 | 연산자 활용 본문

TypeScript

React Props 제한하기: & 와 | 연산자 활용

개발자로 거듭나기 2023. 8. 5. 13:07
반응형

React Props 제한하기: & 와 | 연산자 활용

상황

  • 예를들어 A라는 prop이 있을 때, B라는 prop을 가졌으면 좋겠고, C라는 prop이 있을 때, D라는 prop을 가졌으면 좋겠다.
  • 다음과 같이 하면 제한이 되지 않는다.
import React from "react";

/**
 * 상황 1
 * money가 won or dollor 값을 가지고, won일때는 KR이라는 prop이, dollar일 때는 US라는 prop이 오기를 기대한다.
 */

type ChildProps = {
  name: string;
  money: "won" | "dollar";
  KR?: string;
  US?: string;
};

const Child = ({ name, money, KR, US }: ChildProps) => {
  return <div>Child</div>;
};

const Parent = () => {
  return <Child name="tom" money="won" KR="1000₩" US="1$" />;
};

export default Parent;
  • 다음과 같이 수정할 수 있다.
import React from "react";

/**
 * & 와 |을 적절히 사용하여 타입을 제한할 수 있다.
 * won일 때는 KR이라는 prop이, dollar일 때는 US라는 prop이 오게된다.
 */

type ChildProps = {
  name: string;
} & ({ money: "won"; KR: string } | { money: "dollar"; US: string });

const Child = ({ name, money }: ChildProps) => {
  return <div>Child</div>;
};

const Parent = () => {
  return <Child name="tom" money="won" KR="1000₩" />;
};

export default Parent;
반응형
Comments