Typescript 적용 실패 후기

요즘 타입스크립트가 인기라고 해서, 이번에 새로 제작하는 작은 프로젝트에 적용했다. 하지만 중도에 시간도 부족하고 지쳐서 포기했다. 하면서 뭐가 어려웠는지 대충 기록해 보았다.

tsconfig.json

moduleResolution / outDir / files / exclude 등의 속성이 이해가 잘 안갔다.

그리고 outDir로 분명 지정했는데 tsc src/index.ts 로 했더니 ourDir에 지정한 path에 파일이안갔다. 알고보니 그냥 tsc를 써야했었다.

Webpack + Typescript

ts-loader 가 뭘 하는애인지 이해가 안갔다

tsx

ts파일과 tsx파일의 차이를 모르고 그냥 쓰다가 VSCode에서 빨간줄 엄청 나왔다

Declaration

이건 뭐에 쓰는지 모르는데 자주 썼다

declare global이것도 이해가 안간다.

Namespace

declare namespace ~~ 이렇게 쓰던데, 안에 interface도 넣을 수 있고, type / class도 다 넣을 수 있었다. 근데 어떤건 export를 앞에 붙이고 어떤건 안붙이는데, 이게 뭐하는건지 이해가 안갔다.

@types/~~

모듈을 설치하면 거의 @types/해당모듈 도 같이 설치하는데, 처음에 이게 뭐하는건지 이해가 안갔다. 그리고 내가 명시적으로 import 하지 않았는데도 알아서 VSCode가 저 폴더를 참조해서 나한테 type을 알려주는게 신기했다.

타입 정의

내 custom type을 만들긴 했는데, 어떤 파일에 넣어야 적절한지 잘 모르겠다. mytype.d.ts 가 좋은지, 그냥 mytypes.ts가 좋은지 모르겠다.

타입추가

원래 자바스크립트 object에 property추가하는건 엄청 쉬운데, typescript에서는
“그런 property없다” 면서 거절을 많이 당했다. 막 어찌저찌 declare namespace ~~ 해가지고 겨우겨우 해당 interface/type에 내 type을 추가시켰는데, 잘 이해는 안갔다.

그리고 window오브젝트에도 뭐 추가할때 고생좀 했다.

타입합병

내가 A라는 타입과 B라는 타입을 만들었는데 둘이 거의 비슷하고 딱 한 property의 type이 달라서 엄청 고민했다. 겨우 Omit? 이라는 함수 같은거를 써가지고 merge했긴 했다.

utils.promisify

mysql모듈을 async/await로 쓰려고 utils.promisify() 했는데, 리턴값의 타입이 안맞는다면서 에러를 띄웠다. 결국 as any로 해결했다.

타입 잘못됬는데?

“그건 그타입이 아닌데”

“거기에는 그 타입을 쓸 수 없어”

내가 VSCode로부터 아주 자주 들었던 말이다. 문제는,,, 에러메세지에 나오는 이상한 type들을 따라따라 들어가서 봐도 뭔지 잘 이해가 안갔다. TResult??…특히 Promise타입은,,, 비슷한게 엄청 많았다.

좋았던점

type을 명확히 해야하기 때문에, 내 프로그램이 어떻게 흘러가는지 더 파악하기 쉬웠다. 또 VSCode가 typescript랑 잘 맞아서, 함수 정의 부분을 찾아갈때도 그냥 cmd + 클릭 하면 찾아가져서 너무 좋았다.

일단은 시간이 좀 부족하고 typescript기본 개념 없이 들이대서 포기는 하는데, 다음 프로젝트때는 꼭 다시 적용할것이다. (바로 다음주부터 XD)

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Up Next:

Typescript + React 막무가내 Error Log

Typescript + React 막무가내 Error Log