Node js

Typescript 로 개발하며 만들어본 유용한 유틸리티

secretjuju 2024. 12. 28. 18:37

TL;DR

  • Typescript 로 개발하며 여러 타입들을 조합하는 상황을 마주해왔다.
  • 반복되는 Type Manipulation 상황에서 이를 간단하게할 유틸리티들을 만들었고, 이를 공유하고자 한다.
  • 생상한 타입들은 아래와 같다.
    • MakeRequired<T, K>
    • MakeOptional<T, K>
    • EnumToUnion
    • NonEmptyArray
    • UnionToIntersection
    • MakeRequiredByPaths<T, K>
  • https://github.com/SecretJuJu/typescript-type-utils

MakeRequired<T, K>

특정 필드만 Required 로 바꾸는 유틸이다.

비즈니스로직에선 특정필드는 필수값이어야할때 별도의 손수 만들지 않아도 된다.

 

 

MakeOptional<T, K>

특정 필드만 Optional 로 바꾸는 유틸이다.

데이터모델에서 특정필드를 선택값으로 바꿀 수 있다.

 

 

EnumToUnion<T>

Enum 을 union 타입으로 바꿔준다.

 

 

NonEmptyArray<T>

배열의 길이가 적어도 1개 이상인 타입.

TypeORM 은 In 연산자 사용시 빈배열이 들어가면 에러가 발생하는데, 이를 타입을 막을 수 있다.

 

 

UnionToIntersection<T>

Union 타입을 And 연산해주는 타입.

이걸 직접 사용한적은 없는데, 아래 MakeRequiredByPaths 타입을 만들며 사용했다.

 

 

MakeRequiredByPaths<T, K>

Nested 한 타입에서 깊숙히 있는 특정 필드만 Required 로 바꿔준다.

주로 InnerJoin 하였지만 타입상으로 Optional 인 경우 사용할 수 있다.

 

 

 

썸네일은 ChatGPT 로 만들어 봤는데, 사용할 사진 없을때 나름 편리한 것 같다 ~~