# custom-decorator

4개의 포스트
post-thumbnail

NestJS Custom Decorator 사용하기

NestJS에는 여러가지 데코레이터가 존재한다. @Body(), @Param()등 특정 요청에 대한 값에 대해 접근할 수 있다. 위와 같은 데코레이터들을 커스텀하여 사용할 수 있다. > Custom Decorator Custom Decorator를 사용하면 request 또는 response에 대해 custom 하여 내가 원하는데로 만들어 줌으로써 재사용이 가능하고 요구사항이 맞는 곳이면 어디에서나 간단하게 사용가능 하다. 예를들어 request.user를 받아오는 데코레이터를 만들어보자. 이렇게 request.user를 받아오는 Custom decorator를 만들어주면 이렇게 request를 직접 받아서 사용하던 코드를 이렇게 사용할 수 있게 된다. 또한 request를 받아서 사용할 때 type 추론을 하지 못하는 것에 반해 Custom decorator를 사용함으로써 type 추론까지 가능해진다. 참고링크 : https://docs.nestjs.com/c

2023년 2월 15일
·
0개의 댓글
·

nestjs 커스텀 데코레이터

예전에 부트캠프에서 nestjs 관련 공부했을때 custom decorator를 만들어 본적이있다. 사실 그때 무작정 따라 치기 바빠서 이게 커스텀 데코레이터를 만드는건지도 몰랐는데 이번에 공부하면서 "응? 나이거 옛날에 해봤던거 같은데? 그때 했던 그게 커스텀 데코레이터 였구나..."라고 생각이 들었다. 커스텀 데코레이터 우선 커스텀 데코레이터를 왜 만드는지에 대해 생각해보았다. 사실 왜 만드는지 처음에는 이해가 안갔다. 이론적으로는 코드의 중복성이나 유지보수를 위해 만든다 라는 말들이 많았는데 커스텀 데코레이터를 만들면 왜 재사용성이나 유지보수에 좋은거지? 라고 이해가 가질않았다. 단적인 예시로 만약 request정보가 필요하다면 그냥 @Req() 를 쓰면 되는거 아닌가? 라고 생각 되기도 했었다. 그런데 생각해보면 @Req() 라는것은 nestjs에서만 사용이 가능한것이다. 그래서 만약 현재는 nestjs지만 환경을 옮겨 fasify나 다른 환경으로 마이그레이션시

2023년 2월 9일
·
0개의 댓글
·
post-thumbnail

typescript 메서드 실행 시간 측정기 decorator 로 구현해보기

시간 측정기 decorator 의 필요성 API 개발 후, 테스트 중에 속도가 빠르지 않으면 어느 지점인 병목인지 확인하기 위해 각 메서드 호출 시간을 측정하는 일이 많아졌습니다. 테스트를 위해 임시로 아래와 같이 코드를 추가했다가 지우고 하는 일을 반복하게 되었었는데, "뭔가 간단하게 하는 방법은 없을까?" 하는 생각이 들었습니다. (가끔 테스트용 코드를 지우지 않는 실수를 저지르기도 했습니다.ㅜㅜ) 이러한 기능은 스프링 프레임워크를 학습할 때 배웠던 AOP 를 이용해 좀더 깔끔하게 해결 할 수 있을 것 같았고, 현재 사용하고 있는 Nest.jS 에서도 NestInterceptor 라는 인터페이스를 구현하면 비슷하게 사용할 수 있어 보였습니다. NestInterceptor 를 이용하여 구현해볼까 하다가, typescript decorator 로 직접 구현해보는 것도 재미있을 것 같아서 한번 시도해보았습니다. Method Decorator method 의 "메서드명, 파

2022년 10월 8일
·
0개의 댓글
·
post-thumbnail

[NestJS] 데코레이터를 이용하여 서비스코드 관심사 분리하기

안녕하세요 회사 프로젝트인 파트너센터 입점에 관련된 스프린트를 하는도중 입점 검수요청, 입점 검수가 완료되면 슬랙으로 알림을 주는 기능을 개발하게 되었습니다. 이때 서비스코드에 알림을 보내는 기능이 과연 입점 도메인에있는 CRUD 서비스코드에 들어가는게 맞을까?.. 라는 생각이 들어서 데코레이터로 분리하는 리팩토링을 진행하게 되었습니다. 기존 코드를 확인하기 기존 코드를 확인 하면서 설명하겠습니다. 이 메소드는 검수자가 검수완료 하거나 반려하는 기능인데 슬랙으로 알림을 보내는 코드까지 같이있으니 뭔가 이상한것 같죠? 바로~ 데코레이터를 생성해서 관심사를 분리하는 리팩토링 해보겠습니다. Alarm 모듈생성 > DiscoveryModuel이 핵심인데 이 모듈의 서비스를 통해서 nestjs container로 접근 해 provider 또는 controller를 가져올 수 있습니다. Decorator 생성 > callBack함수를 받도록 데코레이터를

2022년 7월 11일
·
2개의 댓글
·