매핑된 타입을 사용하여 값을 동기화

이재철·2023년 4월 4일
0

TypeScript

목록 보기
11/11
post-thumbnail

매핑된 타입은 한 객체가 또 다른 객체와 정확히 같은 속성을 가지게 할 때 이상적이다

const REQUIRES_UPDATE: { [k in keyof ScatterProps]: boolean } = {
  xs: true,
  ys: true,
  xRange: true,
  yRange: true,
  color: true,
  onClick: false,
};

function shouldUpdate(oldProps: ScatterProps, newProps: ScatterProps) {
  let k: keyof ScatterProps;
  for (k in oldProps) {
    if (oldProps[k] !== newProps[k] && REQUIRES_UPDATE[k]) {
      return true;
    }
  }
  return false;
}

typescript [k in keyof ScatterProps] 은 타입 체커에게 REQUIRES_UDPATEScatterProps 와 동일한 속성을 가져야한다는 정보를 제공합니다.

나중에 ScatterProps 에 새로운 속성을 추가하는 경우 다음 코드와 같은 형태가 됩니다.

interace ScatterProps {
  // ... Error onDoubleClick 속성이 타입에 없습니다.
  onDoubleClick: () => void;
}

이런 방식은 오류를 정확히 잡아 냅니다. 속성을 삭제하거나 이름을 바꾸어도 비슷한 오류가 발생합니다.

매핑된 타입을 사용해서 관련된 값과 타입을 동기화하도록 합시다.
인터페이스에 새로운 속성을 추가할 때, 선택을 강제하도록 매핑된 타입을 고려해야 합니다.

profile
혼신의 힘을 다하다 🤷‍♂️

0개의 댓글