4P by GN⁺ 10일전 | ★ favorite | 댓글 4개
  • TypeScript는 JavaScript에 타입 정보를 추가한 언어임
    • JS 엔진에 의해 실행되기 전에 타입 정보가 제거됨 → 즉, 작성 및 배포 과정에서 추가 작업 필요
    • 그 추가 작업이 가치가 있는가? → 충분히 가치 있음

자동 완성 및 코드 편집 중 오류 감지

  • TypeScript는 코드 작성 시 자동 완성과 오류 감지 제공
  • 예시 1: 오타, 잘못된 타입, 인수 누락
    • 존재하지 않는 속성에 접근 시 오류 표시. 자동 완성에서 안보임
    • 잘못된 타입의 메서드 호출 시 오류 표시
    • 필수 인수가 누락된 경우 오류 표시
    • 잘못된 타입의 인수를 전달한 경우 오류 표시
  • 예시 2: 함수 반환값 오류
    • 반환값이 정의된 타입과 일치하지 않으면 오류 표시
    • 예를 들어, 반환값이 string[]인데 반환 타입이 string으로 정의된 경우 오류 발생
  • 예시 3: 선택적 속성 처리 오류
    • 선택적 속성을 반환 값으로 사용할 경우 타입이 일치하지 않으면 오류 표시
  • 예시 4: switch 문에서 case 누락
    • switch 문의 모든 case가 처리되지 않으면 오류 발생
    • 남은 값이 never 타입이어야 한다는 요구사항 위반 시 오류 발생
  • 예시 5: 코드에서 특정 경우 처리 오류
    • 특정 값에 따라 분기 처리 시 잘못된 경우 오류 발생
    • 예를 들어, 특정 객체 타입에 존재하지 않는 속성 접근 시 오류 발생

함수 매개변수 및 반환 타입 명시 → 좋은 문서화 역할

  • TypeScript는 함수의 매개변수 및 반환 타입을 명시할 수 있음
  • 코드 이해도 및 유지 보수성 향상
  • 함수의 인자와 반환값이 어떤 타입인지 명확하게 드러남

코드 리팩토링 강화

  • TypeScript는 코드 리팩토링을 더 안전하게 수행하도록 도와줌
  • 메서드 이름 변경 시 모든 연결된 코드에서 안전하게 반영됨
  • 코드의 연결 관계를 정확하게 파악할 수 있음

TypeScript 사용은 더 쉬워짐

  • TypeScript 실행 및 컴파일이 쉬워짐
  • Node.js, Deno, Bun 같은 플랫폼에서 직접 TypeScript 실행 가능
  • Vite 같은 번들러는 TypeScript를 기본 지원
  • 타입 제거(type stripping) 기법 도입 → 타입 정보만 제거하고 다른 변환 없음
  • npm 패키지 배포 개선됨 → JavaScript 및 타입 선언 파일 자동 생성 지원

TypeScript의 단점

  • 학습 곡선 존재 → JavaScript보다 복잡함
  • 일부 npm 패키지에서 타입 정의가 없거나 잘못된 경우 문제 발생 가능
  • tsconfig.json 설정이 복잡할 수 있음
    • 최대한 엄격한 설정으로 설정하면 문제 완화 가능
    • 타입 제거가 명확해지면서 tsconfig.json의 역할이 단순화됨

TypeScript FAQ

TypeScript 코드가 무겁지 않은가?

  • TypeScript는 타입 추론을 통해 최소한의 타입 정의로도 코드 작성 가능
  • 복잡한 타입 주석 없이도 유용하게 작동 가능

TypeScript가 JavaScript를 C# 또는 Java로 바꾸려는가?

  • 초기에는 JavaScript의 부족한 기능을 보완하기 위해 클래스, 모듈, 열거형 등 추가
  • 현재는 ECMAScript 표준에 맞춰 TypeScript를 개선하고 있음
  • JavaScript에 없는 기능은 TypeScript에 추가되지 않음

TypeScript가 객체 지향 프로그래밍(OOP)만 지원하는가?

  • TypeScript는 함수형 프로그래밍 패턴도 잘 지원함
  • 예를 들어, discriminated union은 함수형 프로그래밍에서 자주 사용됨

복잡한 타입 정의는 꼭 배워야 하는가?

  • 대부분의 TypeScript 사용은 간단한 타입 정의로 충분함
  • 복잡한 타입 정의는 라이브러리 작성 시 유용하지만 일반적인 사용에서는 필요 없음

TypeScript 학습에 얼마나 걸리는가?

  • 기본 개념은 하루 만에 학습 가능
  • 간단한 코드 작성 및 디버깅은 다음 날부터 가능
  • 점진적으로 복잡한 타입 및 고급 기능 학습 가능

다음에 읽을 자료

강타입 주는 이점이 있어요 c++에서도 마찬가지

자바스크립트->타입스크립트 쓰면 눈 감고 개발하다가 눈 뜬 느낌. 타입이 주는 안정감과 자동완성, 코파일럿과의 조합

우리회사 팀들 자바스크립트로 충분하다 하면서 프로젝트했다가 지금 타입스크립트로 모두 전환중입니다

자바스크립트를 대체하는 것이 아닌 보완하는 것, 이 것이 타입스크립트가 Dart를 이긴 성공 요인인 것 같습니다. 정말 배우길 잘했다는 생각이 듭니다.