자바스크립트로 규모가 큰 프로젝트를 만들다 보면 꼭 겪는 일이 있습니다. 분명 숫자라고 생각했던 값이 문자열이어서 엉뚱한 결과가 나오는 일. 타입스크립트(TypeScript)는 이런 실수를 코드를 실행하기 전에 잡아줍니다.

무엇이 다른가

타입스크립트는 자바스크립트에 타입(type)이라는 안전장치를 더한 언어입니다. 작성한 코드는 결국 평범한 자바스크립트로 변환되어 실행되므로, 기존 생태계를 그대로 쓰면서 안정성만 얻는 구조입니다.

첫 코드

// 매개변수와 반환값의 타입을 명시
function add(a: number, b: number): number {
  return a + b;
}

add(2, 3);      // OK
add(2, "3");    // 컴파일 단계에서 에러! 실수를 미리 차단

a: number 처럼 타입을 적어두면, 잘못된 값을 넣었을 때 편집기가 빨간 줄로 즉시 알려줍니다.

왜 실무에서 표준이 되었나

  • 자동완성이 강력해집니다. 객체에 어떤 속성이 있는지 편집기가 다 알려줍니다.
  • 협업 시 함수의 입출력이 문서처럼 드러나, 남이 짠 코드를 읽기 쉽습니다.
  • 리팩터링이 두렵지 않습니다. 타입이 맞지 않으면 바로 잡히니까요.

처음에는 타입을 적는 게 번거롭게 느껴지지만, 프로젝트가 커질수록 "이걸 왜 진작 안 썼지" 싶어집니다. 자바스크립트에 익숙해졌다면 다음 단계로 강력히 추천합니다.

어디서부터 도입하면 좋을까

이미 자바스크립트 프로젝트가 있다면 전부 한 번에 바꿀 필요는 없습니다. 파일 하나부터 .ts로 바꿔 점진적으로 적용할 수 있고, 타입을 느슨하게 두었다가 점차 엄격하게 조여가는 방식도 가능합니다. 핵심 로직이나 여러 사람이 함께 쓰는 공통 모듈부터 타입을 입히면 효과가 큽니다.

처음 만나는 개념들

유니언 타입(여러 타입 중 하나), 인터페이스(객체의 모양 정의), 제네릭(타입을 변수처럼 다루기) 정도만 익혀도 실무의 대부분을 감당할 수 있습니다. 처음엔 any로 도망치고 싶겠지만, any를 줄여갈수록 타입스크립트의 진짜 효용이 나옵니다. 편집기의 빨간 줄을 적으로 여기지 말고, 버그를 미리 잡아주는 친구로 받아들이면 금세 익숙해집니다.