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 로 만들어 봤는데, 사용할 사진 없을때 나름 편리한 것 같다 ~~