다음과 같이 A 객체 타입 키 이름에 $ 접두사를 붙인 새로운 B 객체 타입을 정의하려고 합니다.

interface A {
  width: number;
  height: number;
}

interface B {
  $width: number;
  $height: number;
}

유틸리티 타입을 만들지 않고 다음과 같이 A 타입을 활용해서 정의하는 방법이 있습니다. 일일이 타입을 다시 정의하지 않고 기존 타입을 참조하기 때문에 실수를 방지할 수 있지만 여전히 수작업으로 정의해야 합니다.

interface A {
  width: number;
  height: number;
}

interface B {
  $width: A['width'];
  $height: A['height'];
}

다음과 같이 접두사를 붙이는 유틸리티 타입을 사용하면 수작업 없이 간단하게 새로운 B 타입을 만들 수 있습니다.

type PrefixObjectKey<T, P extends string> = {
  [K in keyof T as K extends string ? `${P}${K}` : never]: T[K]
}

interface A {
  width: number;
  height: number;
}

type B = PrefixObjectKey<A, '$'>
이전 글
#developer
Node Sass -> Dart Sass 환경 전환 (Feat. CRACO + Scoped CSS)
다음 글
#developer
Google Sheets API로 무료 데이터베이스 구성하기
어라운드어스

Coding everything around us

이 블로그는 Gatsby로 만들었습니다.

백은주 Sara
Frontend Developer @wadiz