삽질의 현장/- TypeScript 6

TypeScript로 개발 할 때 유용한 라이브러리

tsc 타입 스크립트 컴파일러. 타입스크립트(.ts)을 자바스크립트로 변환하므로 트랜스파일링이 적절한 표현. 현재 지원하는 자바스크립트 버전은 ES3, ES5, ES6(ES2015), ES2016, ES2017(ESNext) tsc 명령어에 다른 옵션을 붙이지 않고 실행할 경우, 프로젝트 루트 디렉토리에 tsconfig.json 파일이 있다면, 해당 파일을 읽어들여 프로젝트 전체를 대상으로 컴파일한다. ts-node 타입 스크립트를 트랜스파일링 없이 바로 실행할 수 있도록 해준다. nodemon node.js 기반 어플리케이션 개발시 파일 변경이 감지될 때 자동으로 재시작하도록 도와주는 툴 class-transformer plain 객체는 object 클래스의 인스턴스 객체이다. {} 표기법을 통해 생성..

Angular 를 통해 바라본 의존성 주입 이해

서비스란, 애플리케이션 전역의 관심사를 구현. 의존성 주입 (Dependency Injection) 의존성의 인스턴스를 생성하는 코드와 사용하는 코드가 컴포넌트 내 같이 존재한다면 컴포넌트와 의존성이 긴밀한 결합(Tight Coupling)을 하고 있다고 할 수 있다. 긴밀한 결합을 느슨한 결합(Loose Coupling)으로 의존 관계를 갖게하려면 의존성 인스턴스를 사용하는 코드는 인스턴스 생성에 관여하지 않고 단지 필요한 인스턴스를 요구하기만 하고 외부 환경에서 요구된 인스턴스를 생성하여 전달하면 된다. 그렇게 한다면 의존성 인스턴스를 사용하는 코드는 인스턴스를 생성하는 방법을 알 필요가 없어지고, 의존성이 변경된다 하더라도 인스턴스를 전달하는 외부 환경이 변경된 의존성의 인스턴스를 전달하기만 한다면..

TypeScript TypeORM Migration 정리

TypeORM 사용중 migration 기능을 대충 본것 같아 관련한 기능을 정리해봤다. 모델 변경사항을 데이터 베이스에 동기화해야한다. 일반적으로 데이터베이스에서 데이터를 가져오면 프로덕션에서 스키마를 동기화할 때 사용하는 synchronize: true 는 안전하지 않다. 마이그레이션은 데이터베이스 스키마를 업데이트하고 기존 데이터베이스에 새로운 변경사항을 적용하기 위해 SQL 쿼리가 포함된 단일 파일이다. import { Entity, Column, PrimaryGeneratedColum } from "typeorm" @Entity() export class Post { @PrimaryGeneratedColum() id: number; @Column() title: string; @Column() ..

TypeScript로 DI 구현해보기

TypeScript 공부 중 DI에 대한 좋은 자료가 있어 번역하며 정리해본다. 참고: Dependency Injection in TypeScript 성숙한 프레임워크는 일종의 의존성 주입(DI)를 구현할 수 있다. DI는 한 개체가 다른 개체의 종족성을 제공하는 기술이다. class Foo {} class Bar { foo: Foo; constructor() { this.foo = new Foo(); } } class Foobar { foo: Foo; bar: Bar; constructor() { this.foo = new Foo(); this.bar = new Bar(); } }이것은 클래스 간에 직접적이고 교환 불가능한 종속성을 갖게 된다. 코드가 복잡해지고 구성 요소의 재사용성이 어려워져 테스트도..

의존성 주입이란 무엇인가?

의존성 주입에 대해 리서칭하는 중 답변이 이해하기 좋아 댓글로 오고 간 내용을 정리해보았다. 참고: 의존성 주입이 뭔가요? 의존성 주입이란, '필요한게 있을 때 무엇이 필요하다고 선언하면 알아서 제공해줘' 즉, 관심의 분리(seperation of concern)을 의미한다. 일반적으로 class의 instance를 다음과 같이 생성하여 사용한다. MyClass myClass = new MyClass(); instance 생성 비용이 크다거나, 여러 군데서 사용한다거나, 일일히 생성할 필요가 있는지 등에 대한 이유로 instance의 생성을 컨테이너에 맡겨서 일괄적으로 진행하고, life-cycle 관리 역시 컨테이너에 맡겨버리게 된다. instance의 생성 및 관리 주체가 내가 아니라 컨테이너가 되기..

@Decorator에 대하여 알아보자

데콜레이터에 대해 알아보다가, TypeScript KR 깃허브 페이지에 번역 본이 있어 정리해봤다. TypeScript와 ES6의 클래스가 도입됨에 따라 클래스 및 클래스 멤버에 어노테이션 또는 변경을 지원하기 위해 추가적인 기능이 필요한 일부 상황이 있다. 데코레이터는 클래스 선언과 멤버에 대한 어노테이션과 메타-프로그래밍 구문을 모두 추가할 수 있는 방법을 제공한다. 데코레이터에 대한 실험적인 지원을 사용하려면 커멘드 라인이나 tsconfig.json 에서 experimentalDecorators 컴파일러 옵션을 사용하도록 활성화해야 한다. 데코레이터는 클래스 선언, 메서드 접근제어자, 프로퍼티 또는 매개변수에 첨부될 수 있는 특별한 종류의 선언이다. 데코레이터는 @표현식의 형태로 사용하는데, 여기서..