TypeScript는 JavaScript 코드에 타입 정보를 표현하고 실행 전에 여러 종류의 실수를 찾을 수 있게 하는 언어이자 도구 체계다. 함수가 어떤 값을 받고 반환하는지 드러내므로, 코드 규모가 커졌을 때 변경 영향을 파악하는 데 도움이 된다. 기본 실행 의미는 JavaScript를 바탕으로 한다.
정적 검사로 찾는 실수
문서 조회 함수가 문자열 식별자를 받도록 선언되어 있는데 숫자를 전달하면 타입 검사기가 잘못된 사용을 지적할 수 있다. 객체의 존재하지 않는 속성을 읽거나, 문자열 값을 함수처럼 호출하는 경우도 검사 대상이다. 편집기는 이 정보를 자동완성, 이동과 이름 변경에 활용한다. 타입은 개발자 간 함수 사용 계약을 설명하는 역할도 한다.
간단한 데이터 모델
다음은 문서 제목을 표시하는 데 필요한 최소 형태의 예다.
type Article = { title: string; summary?: string };
function heading(article: Article): string {
return article.title;
}
summary 뒤의 물음표는 해당 속성이 없을 수 있음을 표현한다. 이런 값을 사용할 때는 부재 가능성을 처리해야 한다. 실제 JSON 응답이 이 형태인지 확인하는 과정은 별도로 필요하다. 관련 공식 설명.
컴파일과 실행의 구분
TypeScript의 타입 표기는 보통 JavaScript 결과물에서 제거된다. 따라서 타입 선언을 추가했다고 서버가 보낸 잘못된 데이터가 자동으로 거부되지는 않는다. 네트워크, 사용자 입력, 저장된 파일처럼 프로그램 바깥에서 들어오는 값은 실행 중 검증하는 경계를 둔다. 타입 검사 통과와 실제 서비스 동작 성공은 서로 다른 확인 단계다.
엄격도와 도입 범위
검사 옵션을 통해 암묵적인 any나 null 관련 실수를 더 엄격하게 다룰 수 있다. any를 넓게 쓰면 빠르게 코드를 연결할 수 있어도 보호 효과가 줄어든다. 기존 프로젝트에는 외부 응답과 핵심 함수 경계부터 타입을 명시하고 점진적으로 넓힐 수 있다. 단위 테스트는 구체적인 동작을 확인하므로 타입 검사와 함께 사용한다. 모든 파일에 타입이 있다는 사실보다 잘못된 상태를 표현하기 어렵게 모델링했는지가 더 중요하다.
참고: 공식 개발 문서.