본문 바로가기

정리/TypeScript3

reflect-metadata reflect-metadata 런타임에 클래스, 함수에 데이터를 조작할 수 있다. 설정 tsconfig.json에 emitDecoratorMetadata 설정 필요 emitDecoratorMetadata: true npm i --save reflect-metadata 사용법 const aaaa = { bbbb: 'ccc' }; // metadataKey로 데이터 설정 및 조회 Reflect.defineMetadata('test', 'test2', aaaa); const test = Reflect.getMetadata('test', aaaa); console.log(`aaaa: ${JSON.stringify(aaaa)}`); console.log(`test = ${test}`); Reflect.define.. 2022. 11. 8.
Type에서 데코레이터 사용하기 데코레이터 TypeScript 및 ES6에 클래스가 도입됨에 따라, 클래스 및 클래스 멤버에 어노테이션을 달거나 수정하기 위해 추가 기능이 필요한 특정 시나리오가 있습니다. 데코레이터는 클래스 선언과 멤버에 어노테이션과 메타-프로그래밍 구문을 추가할 수 있는 방법을 제공합니다. 데코레이터는 JavaScript에 대한 2단계 제안이며 TypeScript의 실험적 기능으로 이용 가능합니다. 설정방법 명령줄 tsc --target ES5 --experimentalDecorators tsconfig.json { "compilerOptions": { "target": "ES5", "experimentalDecorators": true } } 데코레이터 합성 function first() { // 데코레이터 팩토리.. 2022. 11. 5.
TypeORM에서 메모리DB(pg-mem) 사용해서 테스트 코드 만들기 repository를 테스트 할 때 mock을 사용하면 정확한 테스트가 어렵고 그렇다고 실제 DB를 사용하자니 설정이라든가 롤백작업을 해주어야 한다. 그래서 메모리DB를 사용해서 테스트를 하는 경우가 있는 데 TypeORM에서 메모리 DB 사용해서 테스트 하는 방법을 정리한다. pg-mem 설치 npm i --save pg-mem pg-mem import 및 db 가져오기 import { DataType, newDb } from 'pg-mem'; const db = newDb(); current_database 함수 만들기 db를 실행하면 current_database 함수가 실행이 되는 데 해당 함수가 pg-mem에는 없어서 에러가 나온다. 해당 함수를 추가해 주자 db.public.registerFu.. 2022. 11. 4.