kakasoo

재귀적으로 카멜케이스로 추론되는 객체 타입 본문

프로그래밍/TypeScript

재귀적으로 카멜케이스로 추론되는 객체 타입

카카수(kakasoo) 2023. 8. 11. 20:54
반응형
type SnakeToCamelCaseObject<T extends object> = {
  [K in keyof T as SnakeToCamel<ToString<K>>]: T[K] extends object
    ? SnakeToCamelCaseObject<T[K]>
    : T[K];
};

const c: SnakeToCamelCaseObject<{
  a_b: {
    c_d: {
      e_f: {
        g_h: true;
      };
    };
  };
  i_j: false;
}> = {
  aB: {
    cD: {
      eF: {
        gH: true,
      },
    },
  },
  iJ: false,
};

카멜케이스 타입을 재귀적으로 돌게 하면 위와 같이 스네이크 케이스로 만들어진 타입을 재귀적으로 카멜 케이스가 되게 수정할 수 있다.
컨벤션을 일괄적으로 변경하기에 용이하다.

문자열을 카멜케이스로 변경하는 타입은 아래에서 확인할 수 있다.

 

 

 

SnakeCase에서 CamelCase로 리터럴 타입 추론하기

type SnakeToCamel< Target extends string, P extends string[] = Split > = Join; 타입 파라미터 Target을 받는다. 이 타입 Target을 _ 문자를 기준으로 Split하면 문자열이 배열의 형태가 되는데, 이를 일단 P에 저장한다.

kscodebase.tistory.com

 

반응형