글또에서 듣게 된 강의 중 타입스크립트 관련 강의를 듣게 되어 해당 강의에 대한 후기를 나눠볼까 한다. 강의 제목은 'Typescript :기초부터 실전형 프로젝트까지 with React + NodeJS'으로 타입스크립트의 기초를 알려주는 강의다. (강의 링크)
먼저 강의 후기를 말하기 전에 내가 어떤 배경 지식을 가지고 있는 사람인지 설명하자면 백엔드 개발자이고 프론트는 거의 모른다고 봐도 무방할 정도의 지식을 가지고 있다. 회사에서 어드민을 만들 때 Vue.js를 사용하긴 하지만 그것도 안다고 작업한다고 하기엔 어색한 수준이다. 그렇기에 이 강의를 신청하게 되었다. 주먹구구식으로 프론트 개발을 하던 내가 이제 내가 무엇을 하는지 알고 프론트 개발을 하는 사람이 되기 위해서!
그 관점에서 이 강의 후기는 내가 원했던 내용과는 사실 거리가 좀 멀었다. 나는 Node의 동작 원리도 제대로 모르는 사람으로써 프론트 서버가 돌아가는 기반에 대해서 알고 이 부분에서 이 모듈이 왜 필요한지, 패키지 구조는 왜 이렇게 되어 있는건지와 같은 더 근원적이고 개념적인 내용을 원했었다. 하지만 해당 강의는 좀 더 실무 중심적인 강의라고 할 수 있다. 내가 앞서 말한 아쉬운 점이 있긴 했지만 강의에 나온 내용을 바로 실무에서 사용할 수 있고 프로젝트까지 강의에서 진행할 수 있다는 점이 좋은 것 같다.
TypeScript에는 Decorator 라는 개념이 존재한다. Decorator를 사용하면 클래스나 클래스 멤버에 어노테이션을 달아서 함수를 적용할 수 있다. 이를 사용하려면 tsconfig.json
에서 experimentDecorators
컴파일러 옵션을 활성화해야 한다.
TypeScript 공식 문서에서 관련 코드를 가져와서 설명을 하자면 아래와 같다.
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}
@sealed
class BugReport {
type = "report";
title: string;
constructor(t: string) {
this.title = t;
}
}
- Decorator Factories
function color(value: string) { // 데코레이터 팩토리
return function (target) { // 데코레이터
// 'target'과 'value' 변수를 가지고 무언가를 수행합니다.
};
}
Decorator Factories를 이용해서 Decorator Functions를 커스텀하거나 생성할 수 있다. 강의에서는 어노테이션을 단 객체에 bind하는 Decorator Function을 만들어서 사용했는데 매우 유용해보였다.
TypeScript에는 Namespaces 와 Modules 라는 개념도 존재한다. 많은 파일들이 존재하게 되면 다른 객체와 이름 충돌을 방지하기 위해 구조 체계가 필요하게 된다. 이 때 전역 Namespace를 사용하여 많은 이름을 만들어내는 대신 Namespace로 객체들을 구분해서 관리할 수 있다.
이 때 Typescript 1.5 부터 Internal Modules -> Namespace, External Modules -> Modules 로 이름이 바뀌었다고 한다. 즉 Namespaces와 Modules 는 모두 모듈로 볼 수 있는 것이다. 그럼 어떤 차이가 있을까?
--outFile
을 사용해 연결할 수 있다.해당 강의는 유데미에서 쿠폰을 발급받았습니다.
문지은 선배님 정말 대단해!!!!!!