보통 하나의 프로젝트를 생성할 때, 어플리케이션 전용으로 열거나, 문서 작성 전용으로 오픈한다.
하지만, 나는 유데미 강의 사이트를 들으며 얻는 지식과, 그 과정에서 짤막하게 생성하는 NestJS 프로젝트들을
하나의 폴더 "udemy" 에 생성했다.
나는 es6 구문으로 작성되는 자바스크립트에도 집중했지만,
타입스크립트의 구문이 es5 로 컴파일 되는 과정에서 클래스, 프로토타입 간의 chain 이 보인다는 것이 신기했다.
물론 이후에는 Map, Arrow 함수, Promise, async, await 을 이해하기 위해
target 은 es6 로 설정 해 두고 컴파일 했다.
➜ udemy tree -L 2
.
├── docs-to-learn # JS, TS 테스팅 및 문서 작성 장소.
│ ├── 1-decorator-in-tsconfig.md
│ ├── 2-about-decorators.md
│ ├── 3-nestcli-after-tsconfig.md
│ ├── 4-private-in-js.md
│ ├── 5-what-is-sqlite.md
│ ├── 6-package-and-lock-json.md
│ ├── node_modules
│ ├── package-lock.json
│ ├── package.json
│ ├── tempTs
│ ├── test-code
│ └── tsconfig.json
└── nestjs # nest cli 를 통해 생성한 프로젝트들
├── di
├── messages
├── mycv
└── scratch
10 directories, 9 files
직접적인 컴파일 과정은 현재 -> 부모 디렉토리 순으로 나아가며 "tsconfig.json" 을 찾기 때문에,
"docs-to-learn" 과 "nestjs" 는 별개의 컴파일을 실행 할 수 있었다.
그러나, 타입스크립트 타입 체킹을 제공하는 별도의 패키지에서 문제가 발생했다.
문서 작성 디렉토리인 "docs-to-learn" 에 작성한 코드 자체에 문제가 없는데, 타입에서 지속적으로 오류가 난 것이다.
코드의 예시는 이렇다.
class TestClass {
weakMap : WeakMap<object, any>;
constructor() {
// 문제 발생 - new WeakMap
this.weakMap = new WeakMap<object, any>();
}
}
타입도 틀리지 않았는데 무엇이 문제일까?
문제는 바로 타입스크립트 모듈의 경로였다.
타입스크립트의 모듈 경로가 뭐가 문제였을까?
내가 마지막으로 생성한 nest 프로젝트는 "mycv" 프로젝트였다.
"docs-to-learn" 과는 디렉토리 자체에서 가지가 갈라짐에도 불구하고,
왜인지 타입 체킹 할 때에 "mycv" 프로젝트의 typescript 모듈을 참고하는 것이었다.
(심지어 "docs-to-learn" 에 이미 타입스크립트를 다운받은 상태)
"mycv" 는 내가 마지막으로 npm 명령어를 통해 실행한 프로젝트였고,
그 이후로는 "ts-node" 혹은 "tsc" 명령어로만 실행하여 컴파일 후, "node xxx.js" 로 결과물을 확인했다.
따라서 나는 IntelliJ IDEA 에디터가, 최근에 npm 으로 실행된 프로젝트를 기점으로,
참고하는 타입스크립트 모듈이 실시간으로 바뀔 것이라고 예상한다. - 현재는 고쳐서 테스트는 안해봤어요
따라서, 나는 인텔리제이에서 타입스크립트 타입 체킹 모듈을 전역적으로 참고할 수 있게 만들기를 원했다.
따라서, Settings --> Language & Frameworks --> TypeScript --> Bundled (5.6.3)
이렇게 세팅하고, "apply" 했다.
"Use types from server" 는 내가 직접 켰다.
이후, 같은 프로젝트에 서로 다른 디렉토리에서 tsconfig.json 을 사용하더라도,
타입 체크에 있어 오류가 전부 사라지는 것을 볼 수 있었다.
'잡다 지식' 카테고리의 다른 글
PostgreSQL 데이터베이스는 무엇일까? (0) | 2025.05.08 |
---|---|
SQLite 데이터베이스는 무엇일까? (0) | 2025.04.01 |
Udemy 강의 검은 화면 해결법 macbook - Chrome (크롬) (0) | 2025.03.21 |