You’re a Real TypeScript Developer Only If...
A few months ago, I published You're a Real JavaScript Developer Only If... It was just a post for...
몇 달 전, 진짜 JavaScript 개발자라면 반드시 겪었을 일들이라는 글이 많은 공감을 얻었다. 신비로운 버그, npm 대재앙, console.log 디버깅, 아무도 이유를 모르지만 작동하는 코드들 — 개발자라면 누구나 한 번쯤 겪는 이야기들이다.
이번에는 TypeScript(자바스크립트에 정적 타입을 더한 언어) 이야기다. 우리를 우리 자신의 실수로부터 보호하는 데 절반의 시간을 쓰게 만드는 그 언어.

첫 번째 TypeScript 현실 확인 #
JavaScript 프로젝트를 TypeScript로 전환하면서 이렇게 생각한 적 있다:
"한 시간이면 되겠지"
그리고 3일 뒤에도 여전히 타입 에러를 고치고 있다.
에러를 없애려고 any를 추가한 뒤, 나중에 다시 돌아와서 고치겠다고 다짐했다.
다시는 돌아오지 않았다.
TypeScript 에러 하나를 고쳤더니...
열두 개의 새 에러가 등장했다.
마치 업적 시스템처럼.
타입 에러를 20분째 바라보며 이런 생각을 했다:
"내가 무슨 말을 하는지는 나도 안다. TypeScript는 왜 모르지?"
아래처럼 쓰고 약간의 죄책감을 느꼈다:
as any
Photo by Markus Winkler on Pexels
사랑과 증오 사이 #
하루 종일 TypeScript에 불평하다가...
막상 순수 JavaScript를 쓰려니 완전히 길을 잃은 기분이 든다.
"단순화하려고" 타입 어노테이션을 지웠다.
TypeScript는 강하게 반대했다.
실제 비즈니스 로직보다 타입을 설계하는 데 더 많은 시간을 쏟은 날이 있었다.
제네릭 타입을 보며 이런 생각을 했다:
"이걸 누가 이렇게 잘 만들었지?"
6개월 전의 내가 만들었다는 걸 발견했다.
또 다른 제네릭 타입을 보며:
"이 악몽 같은 걸 누가 만든 거야?"
역시 나였다.
string | number | null | undefined로 타입을 지정했다.
왜냐하면 인생은 복잡하니까.
고수 개발자의 순간들 #
파일을 열었더니 이런 코드가 있었다:
type Result<T extends keyof U, U extends object>그리고 즉시 파일을 닫았다.
TypeScript와 한 시간째 싸우다가...
결국 TypeScript가 처음부터 옳았다는 걸 깨달았다.
IDE에서 빨간 물결선이 마침내 사라졌을 때 환호가 나왔다.
한 곳에서 프로퍼티 이름을 바꿨더니...
TypeScript가 스무 개의 파일이 깨지는 걸 막아줬다.
그 순간만큼은 진심으로 감사했다.
프로젝트에 strict 모드를 추가했다.
그리고 알고 싶지 않았던 것들을 알게 됐다.
자동완성을 너무 많이 써서 프로퍼티 이름을 직접 타이핑하는 게 어색해졌다.
비상구 해결책들 #
아래 코드를 쓰고 아무도 못 봤으면 했다:
// @ts-ignore타입을 너무 복잡하게 만들어서 미래의 내가 이해하려면 문서가 필요할 것 같았다.
TypeScript 에러를 Google에 복붙했다.
그 답변에는 원래 에러보다 TypeScript가 더 많이 들어 있었다.
같은 디버깅 세션에서 이런 말을 동시에 했다:
"타입은 맞다. 코드가 틀렸다."
그리고
"코드는 맞다. 타입이 틀렸다."
버그를 드디어 고쳤더니...
TypeScript가 이틀 전부터 이미 경고하고 있었다는 걸 깨달았다.
진짜 TypeScript 개발자인가? #
이 목록을 읽으면서 몇 줄마다 고개를 끄덕였다면...
축하한다! 🥳 당신은 공식적으로 TypeScript 개발자다.
아마 이런 경험들이 있을 것이다:
- 아무도 안 볼 때
any를 추가한 적 있다 - 결국 옳다는 게 밝혀진 타입과 싸운 적 있다
- 기능 구현보다 타입 고치는 데 더 많은 시간을 썼다
- 빨간 물결선이 사라졌을 때 환호한 적 있다
그 모든 불평에도 불구하고...
사실 TypeScript를 좋아한다.
충분한 프로젝트를 거치고 나면 깨닫게 된다:
TypeScript는 당신의 하루를 망치려는 게 아니다.
미래의 당신이 하루를 망치지 않도록 막으려는 것이다.
이 글은 위 출처의 내용을 바탕으로 작성된 초안입니다. 원문의 의견과 정보를 그대로 전달하며, 별도의 견해를 포함하지 않습니다.

