중첩된 데이터에 함수형 도구 사용하기

[쏙쏙 들어오는 함수형 코딩 Ch14]

update() - 객체 값 변경하기

update() 활용해 중첩된 객체 값 변경하기

// 책에 있는 JS 코드를 TS/ES6+ 코드로 변환
function nestedUpdate<T = Record<string, unknown>, S = Record<string, unknown>>(
  originObject: T,
  keys: string[],
  modifier: <S>(targetObject: S) => S
): T {
  if (keys.length === 0) return modifier(originObject);

  const firstKey = keys[0];
  const restKeys = dropFirst(keys);
  return update(originObject, firstKey, (nestedObjectOfFirstKey) =>
    nestedUpdate(nestedObjectOfFirstKey, restKeys, modifier)
  );
}

keys에 들어갈 값들을 literal type으로 선언할 수 있을까?

깊이 중첩된 구조에서 주의할 점

기억해야할 것이 너무 많을 때는 추상화 벽을 사용하자

#develop #fp #nested_data