소개
게시글
질문&답변
2024.09.15
(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"
솔루션 수정본⚠ 기존 댓글에 정리된 내용이 적절치 않아 삭제 후, 실제 동작하는 방법에 대해 다시 정리합니다.다음은 알려진 OOP 인터페이스 분리 패턴(ISP)을 TS기반 tsyringe 에서 추상클래스를 InjectionToken 으로 사용하는 방법입니다. updates: 24-09-19: InjectionToken 형 변환 시, as InjectionToken 에서 `as InjectionToken 또는 as unknown as InjectionToken 으로 변경 1. extends AbstractClass: 추상클래스를 상속,확장합니다.abstract class Super {} class Impl extends Super {} 2. 구현체 클래스에 @registry([..]) 추가@singleton() // ✅ @registry 에 직접 연관된 부모클래스(추상체)를 지정해야 @inject 를 통해 주입이 가능해집니다. @registry([ { // 💡 tsyringe 는 추상클래스 등록을 지원하지 않아 타입미스매치 애러 발생. // 해결은 unknown as InjectionToken 으로 강제 케스팅 후 등록이 가능함. // 1안 token: Super as InjectionToken, // 또는 2안 token: Super as unknown as InjectionToken, useClass: Impl, }, ]) class Impl extends Super {} 3. 사용export class ConstructorInjectionWithTsyringe { constructor( @inject(Impl) readonly sup: Super, ) {} } 동작확인아래는 질문의 소스코드 디버깅 상황에서 캡쳐된 이미지입니다. 추상클래스 HttpClient 타입 맴버변수에, 구현체 AxiosHttpClient 인스턴스가 정상 주입된 것을 확인할 수 있었습니다.(사진)
- 0
- 2
- 428
질문&답변
2024.01.30
ValidationPipe DTO 변환 대신 JS Object 로 변환되는 이유
NestJS 깃헙 이슈 개설해서 한참 소스코드 고치다보니, 어이없이 해결되었는데요,문제가 타입스크립트 에 있고, 원인은 타입스크립트 컴파일 시점에 import/export 파일관계가 꼬였다 라고 볼수밖에 없겠습니다.DTO 클래스 파일 위치를 옮기다보니 index.ts 를 수정하게 되었는데, 이것 때문이라고 추측되었고,확실한 것은 해당 Request 객체를 참조하는 곳에서 tsconfig.json 의 path alias 로 명시된 경로를 직접 상대경로로 바꿔주니, 정상 작동하기 시작했습니다.
- 0
- 2
- 325
질문&답변
2022.07.23
캐릭터 초기위치 와 이동을 `style.left` 대신 `translateX` 로 해보려는데 어렵네요..
ㅠㅠ 질문하기 몇일 전부터 쭉 고민하다 내린결론인데요,transform 자체가 2D 기반 API 라서 그런지 에서 3D 공간 구성을 위한 표현자체가 한계가 많은것 같습니다. 제가 근 몇일간 가장 혼란스러웠던 부분은..첫번째- rotate 시 좌표축까지 회전됨그래픽카드 가속력 지원을 받기위해 left top right bottom 없이 translate 만 가지고 적용을 해보다 알았는데요,rotate -90 deg 를 적용하면, 좌표축 까지 돌아가버려서translateX( ? ) 를 적용하려면돌아가버린 축때문에, 대상이 Z 축으로 이동을 하더군요.. 돌아간 축에 따라 이것을 다시 if 분기로 나눠서 translateXYZ 로 각각 값적용을 하려고 했으나,이방법 또한 적절한 방법인지 고민이 되었습니다. 두번째- translateXYZ 로 이동 후, rotate 되면, 그자리에서 rotate 되지않고, translate3D(0, 0, 0) 을 기준으로 회전을 해서 대상이 화면에서 사라집니다.즉, left 나 top 같은 속성으로만 좌표이동이 가능하단 것입니다.또한 z 축으로 이동하려면 위의 "첫번째" 처럼 rotate 가 된 상태로 x 축을 이동하면 되나,기준축이 이동하는것이 아니기 때문에, left 나 top 을 이용해야 합니다.때문에, 이방법 또한 3D 가속을 지원받지 못해 적절하지 않습니다.Canvas 기반이 아닌상태에서 3D 공간구현을 제대로 하려면3D Matrix 4x4 행렬데이터를 기반하여 적용이 되어야 하는 결론에 다달았습니다.이것을 파려니 시간적인 소요가 너무 심해 단순히 끝내려고 예제와 같은 left 속성으로 이동값을 적용후 마무리 지었습니다. 혹시 틀린 부분이 있다면, 조언 부탁드려도 될까요?그리고 혹시 첫 질문에 해결 힌트를 얻을 수 있었으면 좋을것같아요.
- 0
- 1
- 476
질문&답변
2022.04.26
package.json 외에 여러 *.config.* 파일을 특정(내/외) 폴더에서 관리하도록 경로 설정이 가능할까요?
답변 감사합니다. 주신 답변을 정리해 보았습니다.package.json 을 제외한주변 *.config.* 파일 들의 Lib 가 xxx.config.* 에 대한 `경로 설정 옵션`이 제공된다면 가능.( Lib 마다 캐바캐 )2. 경로 설정은 보통 설정파일 안에 위치하나, `Config1`경로->> `Config2`경로->> `Config3`의 연관된 경로설정의 형태로는 경로설정 을 할 수는 없다.(추측) package.json 에는 설정할 방법이 없다.결론 : root 안에서 config 들을 관리하는 것이 이로움.제가 잘 이해한건지 모르겠습니다..ㅠ
- 0
- 2
- 561
질문&답변
2022.03.29
안녕하세요? 질문 하나 드릴게요.
`웹 계층 컴포넌트` 또는, 이와 연관된`Library 모듈` 모두를 아우르는 표현이 `웹(Spring Web 모듈) 관련` 이라는 표현이라고 이해했습니다. 잘 배우고 갑니다.
- 0
- 3
- 326