본문 바로가기
반응형

typescript8

ts-jenum 으로 응집력 있는 TS 코드 작성하기 (feat. EnumClass) TypeScript의 Enum은 딱 열거형으로서만 사용할 수 있습니다. 다른 언어에서 Enum을 Static 객체로 사용해본 경험이 있는 분들이라면 이 지점이 굉장히 답답하다는 것을 느낄 수 있는데요. Java에서 Enum을 객체로 활용하면 어떤 큰 장점을 얻게되는지는 배민 기술 블로그 를 참고해보시면 좋습니다. 저와 똑같이 답답함을 느끼신 분이 계시는지, 이미 TypeScript도 Java의 Enum과 같이 Static 객체로 Enum을 다룰 수 있도록 ts-jenum 을 만들어주셨습니다. 이번 시간에는 ts-jenum 을 이용해 응집력 있는 Enum 활용법을 소개드리겠습니다. 1. 설치 ts-jenum 은 Java의 java.lang.Enum 과 같은 사용성을 얻기 위해 제공하는 라이브러리입니다. 별.. 2021. 12. 14.
테스트 픽스처 올바르게 사용하기 xUnit에서는 테스트 대상 시스템 (System Under Test, 이하 SUT) 를 실행하기 위해 해줘야 하는 모든 것을 테스트 픽스처라고 부른다. 처음 테스트 코드를 배우게 되면 이 테스트 픽스처 부분에 대해서 완전히 오해하는 경우를 자주 본다. 최근에 팀에 단위 테스트를 전파하고 코드리뷰를 진행하는 과정에서 다들 비슷한 오해를 하고 있는걸 발견하고 작성하게 되었다. 모든 코드는 TypeScript와 Jest로 작성되었다 1. beforeEach (setup) 등 사용할 경우 아래 코드를 보면 공통된 테스트 픽스쳐를 beforeEach 로 처리하였다 describe('Order1', () => { let sut: Order; beforeEach(() => { sut = Order.create(10.. 2021. 10. 30.
Jest CLI 대신에 WebStorm Run (Debug)로 수행하자 NodeJS 통합 테스트를 CLI (jest)로 수행 하는 모습을 자주 보는데요. 개인적으로는 단순 CLI로 수행하기 보다는 디버깅을 비롯해서 IDE가 지원하는 강력한 테스팅 환경을 사용하기 위해서 IDE로 수행하는 것을 추천합니다. 이번시간에는 CLI 보다 IDE로 통합 테스트를 수행하는 방법의 장점을 알아보겠습니다. 1. 장점 먼저 깔끔하게 정리된 테스트 레포트를 볼 수 있는데요. 아래와 같이 지정해놓은 테스트 로그를 숨기고 결과만을 정리 해서 보여줍니다. 기존 CLI에서는 테스트를 수행하는 동안 발생한 콘솔 로그 때문에 (특히 debug 용도로 찍어놓은 ㅠ) 정작 중요하게 봐야할 부분을 놓치기도 하는데요. 해당 테스트에서만 발생한 로그를 골라서 볼 수 있습니다. 추가적으로, 디버거를 사용할 수 있어.. 2021. 10. 19.
js-joda 로 TypeORM Date 타입 대체하기 (with NestJS) JavaScript 의 Date Type은 JavaScript의 단점을 이야기할때 항상 거론되는 점인데요. javascript-date-type-is-horribly-broken 위 글에서 언급한 연산에 관한 문제도 있지만, 단순히 +1 Day를 해야하는데도 아래와 같이 직관적이지 못한 잘못된 인터페이스의 코드를 사용해야하는 것도 문제인데요. // Local time var tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); // UTC var tomorrow = new Date(); tomorrow.setUTCDate(tomorrow.getUTCDate() + 1); 연산 코드 자체가 깔끔하지 못하기 때문에 TypeORM에서 날짜 Type.. 2021. 9. 22.
2. NestJS & TypeORM 환경에서 Monorepo 구성하기 - TypeORM 추가하기 지난 시간 에 이어, Monorepo로 구성된 프로젝트에 TypeORM을 추가해보겠습니다. 1. 환경 설정 저 같은 경우 PostgreSQL을 사용할 예정이라 pg 를 기반으로 진행하겠습니다. 필요한 패키지들을 먼저 추가합니다. yarn add @nestjs/typeorm typeorm pg typeorm-naming-strategies class-transformer typeorm-naming-strategies TypeORM에서 Camelcase 필드를 Snake 컬럼에 매핑하기 를 위해 사용됩니다. class-transformer Entity Json을 Dto Instance으로 편하게 변환하기 위해 사용합니다. 그리고 TypeORM과 연동되어 로컬에서 실행할 PostgreSQL DB를 위해 doc.. 2021. 9. 3.
IntelliJ & Webstorm import시 double quotes 대신에 single quotes 기본값으로 사용하기 IntelliJ나 Webstorm을 통해 JS / TS를 개발하다보면 import 구문에서 " 로 인해 불편할때가 많은데요. 이를테면 팀 컨벤션으로 import를 Single Quotes 로 해놓은 경우에는 자동 import 를 통해 "로 import 되면 매번 수동으로 Single Quotes 로 바꿔야만 합니다. 1. Auto Import 하는법 먼저 Jetbrains IDE의 Auto Import 는 다음과 같이 사용할 수 있는데요. 아래와 같이 Import되지 않는 클래스나 function에 포커스를 두고, 단축키를 통해 import를 수행합니다. option + Enter: 제안 목록 보기 option + shift + Enter: 전체 full import 여기서 단일 import인 optio.. 2021. 8. 6.

728x90