Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

[Book] 러닝 타입스크립트 - 안정적인 웹 프로젝트 운영을 위한 타입스크립트의 모든 것

난 JavaScript를 좋아하고 오랫동안 사용했지만, TypeScript는 그리 좋아하지 않는 편이었다. 이런 건 취향이라서 논리적인 이유가 있는 건 아니지만 프로그래밍 언어에 관한 지식이 많은 편은 아니지만 Java를 하면서 타입 시스템이 좀 불편하게 느껴졌고 동적 언어인 JavaScript가 편했다. 물론 아주 큰 규모의 프로그램을 만들 일이 많지 않았기 때문이기도 하다.

이건 정적 언어가 좋냐 동적 언어가 좋냐보다 내 취향에서는 동적 언어가 맞았던 거 같은데 TypeScript가 처음 등장했을 때 타입이 있어서 오는 장점이 나에겐 별로 다가오지 않았다. "그 타입이 없어서 편한 거였는데 굳이?" 같은 느낌이었고 Node.js나 JavaScript로 코딩하면서도 가능하면 트랜스파일도 하지 않는 개발환경을 만들려고 항상 노력했다.

세상이 TypeScript로 바뀌는 것은 알고 있었지만, 그 흐름을 따라가지 못하고 익숙한 JavsScript에 계속 머물러 있었다.(기술에 에고가 쌓인다는 것은 이런 것일까...) 그렇게 TypeScript를 사용할 기회는 없었지만, 업무로 만들던 Node.js 프로젝트가 팀원이 늘어가면서 TypeScript로 전환하는 결정을 하게 되었다. 타입 자체를 부정하는 것은 아니기 때문에 타입의 장점에 공감한 것도 있고 아무래도 흐름이 많이 바뀌다 보니 CommonJS만으로는 Node.js 생태계에서 어려운 부분도 있고 다양한 이유로 어차피 컴파일은 필요하기 때문이기도 하다.

어쨌든 말이 길었는데 TypeScript로 프로젝트를 하는데 아직도 익숙해지지는 않다 기본적으로 JavaScript의 슈퍼 셋이라서 차차 적응할 줄 알았는데 생각보다는 적응이 쉽지 않았고 JavaScript를 TypeScript로 전환하는 작업도 좀 했었는데 맘처럼 잘 안되어서 계속 도움을 요청하곤 했었다. IDE에서 빨간 줄이 아무리 해도 사라지질 않았다.

TypeScript 공부해야지 하고는 사이드 프로젝트에 Deno를 쓰고 있지만 진도가 잘 안 나가서 TypeScript 코딩은 별로 못하고 있었고 공부도 미루고 있다가 이번에 이 책을 꺼내 들었다. 원래는 이팩티브 타입스크립트를 읽으려고 했는데 1월에 신간이 나왔길래 이 책을 먼저 읽었다. 이 책 내용 중에서도 이팩티브 타입스크립트를 추천하는 걸 보니 이팩티브 타입스크립트도 조만간 읽어봐야겠다고 생각했다.

다른 책은 안 봐서 비교는 어렵지만 이 책은 실용적으로 TypeScript를 잘 알려준다는 느낌이다. 문법을 설명하다 보면 내용이 많다 보니 자칫 지루해지기 쉬운데 타입을 중심으로 타입스크립트에서 타입을 어떻게 사용해야 하는지 쉽게 잘 설명한다는 느낌이다. 실제로 코딩하다 보면 분명히 또 막히겠지만 이전에 TypeScript로 코딩하면서 어려웠던 부분에서 내가 뭘 잘못 이해하고 있었는지를 알 수 있었다. 당연하다면 당연하게 JavaScript는 이해하고 있다는 것을 전제로 하고 있다.

배열 타입은 Array 같은 구문으로도 작성할 수 있습니다. 하지만 개발자 대부분은 더 간단한 number[]를 선호합니다.

타입스크립트로 작성하는 대부분의 코드에서는 혼동을 일으킬 정도로 제네릭을 많이 사용해서는 안 됩니다.

타입 서술어는 속성이나 값의 타입을 확인하는 것 이상을 수행해 잘못 사용하기 쉬우므로 가능하면 피하는 것이 좋습니다. 대부분은 간단한 타입 서술어만으로도 충분합니다.

그리고 중립적으로 모든 문법을 비슷한 비중으로 설명하는 것이 아니라 문법을 설명하면서도 위처럼 많은 프로젝트에서 선호하는 방식이나 피해야 하는 부분을 뚜렷하게 말해주는 부분도 처음 TypeScript를 공부할 수 있는 입장에서는 편하게 느껴졌다. 뒷부분에 나오는 구문 확장에서 TypeScript가 JavaScript의 구문을 확장한 부분의 단점을 명확히 얘기하면서도 조심해야 할 부분과 현재 생태계에서는 필요한 부분을 얘기해 주는 것도 좋았습니다. TypeScript의 모든 것이라기보다 실용적으로 어떤 부분을 설명하는 게 도움이 될지 고민했다는 점이 느껴져서 좋았다.

후반부에 TSConfig 등의 옵션에 대한 설명도 나와서 참조하기 좋지만, TypeScript로 프로젝트를 하려면 생태계의 도구도 좀 필요한데 이런 부분이 없었던 건 좀 아쉽지만, 타입스크립트 언어 자체에만 집중한다는 면에서는 수긍할 수 있는 부분이다.

2023/02/10 03:15 2023/02/10 03:15