Documentation - TypeScript for the New Programmer

자바스크립트

잘 호환되는 적당한 프로그래밍 언어였던 자바스크립트가 명확하게 정의되고 사용량이 늘어가고 단순 정적 웹에서 다양한 상호작용이 가능한 웹으로 발전해 나가며 자바스크립트는 웹 뿐만 아니라 모바일 앱에서도 범용 가능한 엄청난 언어가 됨

더 이상 웹의 간단한 구동만을 도와주는 언어가 아니게 됨 (node js 등을 이용하여 서버를 구축한다거나 react native를 이용하여 모바일 앱을 만든다거나…)

그런데 이 초기 적당히 잘 호환되는 언어로부터 출발하게 된 것 때문인지 다른 언어들과 비교할 때 자잘한 문제들이 발생하기 시작 → 가장 큰 차이점 및 문제 타입

자바스크립트는 암묵적 변환이 아주 잘 일어나고 변수에도 별다른 타입이 없기 때문에 그 어떤 값이라도 대입이 가능

타입스크립트

자바스크립트의 상위호환, superset

아주 간단히 말하자면 자바스크립트에 타입이란것이 추가된 것

이런 타입은

그렇지만 런타임 특성이나 구문, 심지어 라이브러리도 자바스크립트를 모두 따라가게됨 → 상위 호환 언어이니 당연… 자바스크립트로 잘 작동하는 언어는 타입스크립트로도 잘 작동됨

다만 타입에 문제 있어보이면 경고로 알림 실행을 중지한다거나 그러지 않음

또한 타입스크립트는 구조적으로 타입을 비교; 덕 타이핑(duck typing)

→ 예를 들어 해당 인터페이스로 타입을 지정한 것이 아니라 일반 객체가 동일한 구조를 가지도록 설계하는 것은 동일한 타입이라고 판단(아래 코드블럭 참고)