Skip to content

es-toolkit/types ​

es-toolkit/types는 타입스크립트가 기본으로 제공하지 않는 컴파일 타임 타입 유틸리티를 모아둔 모듈이에요. 런타임 코드가 전혀 없는 선언 전용(declaration-only) 모듈이라, 값이 아니라 타입만 가져와서 써요.

typescript
import type { DeepPartial, ValueOf } from 'es-toolkit/types';

담고 있는 것 ​

타입스크립트에 없어서 매번 직접 만들어 쓰던 타입들만 골라 담았어요.

타입설명
ValueOf<T>객체의 값 타입들을 유니온으로 만들어요. keyof의 값 버전이에요.
Simplify<T>교차 타입이나 매핑된 타입을 하나의 읽기 쉬운 객체 타입으로 펼쳐요.
Writable<T>모든 프로퍼티에서 readonly를 없애요. 기본 Readonly의 반대예요.
NonEmptyArray<T>최소 한 개 이상의 요소를 가지는 배열이에요.
DeepPartial<T>중첩된 객체까지 재귀적으로 모두 선택적으로 만들어요.
DeepReadonly<T>중첩된 객체까지 재귀적으로 모두 readonly로 만들어요.
IsEqual<A, B>두 타입이 정확히 같은지 알려줘요.
Primitive자바스크립트의 모든 원시값을 모은 유니온이에요.
JSONValueJSON.parse가 만들어낼 수 있는 모든 값이에요.
UnknownRecord키도 값도 알 수 없는 객체예요. {} 대신 쓰세요.
EmptyObject프로퍼티가 하나도 없는 객체예요. isEmptyObject와 짝을 이뤄요.
SetOptional<T, K>원하는 키만 골라 선택적으로 만들어요. 기본 Partial의 키 지정 버전이에요.
SetRequired<T, K>원하는 키만 골라 필수로 만들어요. 기본 Required의 키 지정 버전이에요.
ToCamelCaseKeys<T>모든 키를 재귀적으로 카멜 표기법으로 변환해요. toCamelCaseKeys의 반환 타입이에요.
ToSnakeCaseKeys<T>모든 키를 재귀적으로 스네이크 표기법으로 변환해요. toSnakeCaseKeys의 반환 타입이에요.
ToPascalCaseKeys<T>모든 키를 재귀적으로 파스칼 표기법으로 변환해요. toPascalCaseKeys의 반환 타입이에요.
ToKebabCaseKeys<T>모든 키를 재귀적으로 케밥 표기법으로 변환해요. toKebabCaseKeys의 반환 타입이에요.
ToConstantCaseKeys<T>모든 키를 재귀적으로 상수 표기법으로 변환해요. toConstantCaseKeys의 반환 타입이에요.
Merge<T, S>한 객체 타입에 다른 객체 타입을 깊게 합친 결과예요. merge의 반환 타입이에요.
ObjectKeys<T>Object.keys가 돌려주는 형태로 키를 유니온으로 만들어요. ValueOf의 키 버전이에요.
DistributiveOmit<T, K>유니온의 각 멤버에서 키를 제거하고 멤버별 고유 속성을 유지해요.

선정 기준 ​

타입스크립트가 이미 주는 건 넣지 않았어요. 비슷한 게 기본으로 있으면 그걸 쓰는 게 낫고(Partial, Omit, NonNullable 등), 정말로 빠진 것만 채웠어요. 채울 때도 기본 타입과 결이 같게 만들었어요. 예를 들어 ValueOf는 keyof와 짝이 맞도록 설계했어요.

기여하기 ​

원하는 타입이 여기에 없다면 언제든지 이슈를 남기거나 직접 기여해 주세요. 기여할 때는 그 타입이 어떤 상황에서 필요한지, 얼마나 자주 쓰는 패턴인지를 함께 담아주시면 좋아요. 위 선정 기준을 판단하는 데 큰 도움이 돼요.

MIT 라이선스에 따라 배포됩니다.