타입스크립트는 차세대의 웹 앱, 모바일 앱, NodeJS 프로젝트, 사물인터넷(Internet of Things, IoT) 기기를 뒷받침할 언어다. 타입스크립트는 흔히 발생하는 실수를 방지하며, 자신과 미래의 개발자들에게 문서화를 제공하고, 리팩터링을 쉽게 만들며, 단위 테스트와 숫자를 반으로 줄임으로 더 안전한 프로그램을 구현할 수 있게 보장한다.
여기서 말하는 '안전한'은 타입 안전성을 뜻한다.
타입 안전성 (type safety)
타입을 이용해 프로그램이 유효하지 않은 작업을 수행하지 않도록 방지한다.
3 + [] // 문자열 '3'으로 평가
let obj = {}
obj.foo // undefined로 평가
명확하게 잘못된 동작임에도 자바스크립트는 예외를 던지지 않고 최선을 다해 결과를 도출한다.
자바스크립트의 이런 기능이 도움이 될까? 물론이다.
그럼 버그를 쉽게 확인하는 데도 도움이 될까? 그렇진 않을 것이다.
자바스크립트에서는 이 기능 때문에 코드에 실수를 저지른 시점과 그 실수를 처음 인지하는 시점이 달라지기 쉽다.
자바스크립트는 정확히 언제 개발자가 실수를 저질렀다고 알려주는가? 바로 프로그램을 실행할 때다.
그래서 타입스크립트가 등장했다. 타입스크립트가 에러를 알려준다는 사실 자체보다 더 휼륭한 기능은 바로 에러를 알려주는 시점이다.
개발자가 텍스트 편집기에 코드를 입력하는 순간 곧바로 에러 메세지를 발생시킨다.
3 + [] // 에러 TS2365: '3' 타입과 'never[]' 타입에 연산자 '+'를 적용할 수 없음
let obj = {}
obj.foo // undefined로 평가
모든 타입 관련 버그가 사라질 뿐 아니라 코드를 작성하는 방식도 달라진다.
프로그램을 설계하면서 극단적인 상황을 먼저 고려하게 되며 더 간단하고, 빠르고 이해하기 쉬우며, 유지하기 쉬운 프로그램을 설계할 수 있다.