자바스크립트의 한계가 있기 때문이다. 그러한 부분을 극복하기 위해 사용된다.
동적 타입 언어
자바스크립트 특징 중 하나가 동적 타입 언어라는 것이다. 이 말은 변수에 타입을 명시적으로 지정하지 않고 코드가 실행되는 런타임에 변수의 값이 할당될 때, 해당 값의 타입에 따라 변수 타입이 결정된다는 것을 의미한다.
let a = 1;
let b = '1';
예를 들면 변수 a, b 타입이 number
인지 string
인지는 실제 코드가 동작할 때, 값이 할당되는 순간, 그 값이 1인지 '1' 인지에 따라 결정된다.
동적 타이핑 시스템의 한계
정상 코드
const sum = (a, b) = > {
return a + b;
}
sum(1, 2) ✅ // 3
sum(100) // NaN
sum('a', 'b') // ab
해당 코드는 정상 작동한다. 즉, 자신이 작성한 의도와 다르게 작동을 할 수가 있다.
결국
sum
함수를 호출할 때 사용되는 인수 값에 따라서 a와 b 타입이 결정된다.
등등JSDoc
,다트(자바스크립트를 대체하기 위한 언어)
등 자바스크립트의 한계를 극복하기 위한 방안들이 있다.
마이크로소프트는 자바스크립트의 슈퍼셋 언어인 타입스크립트를 공개했다. 자바스크립트를 코드를 그대로 사용할 수 있고 다양한 단점을 극복할 수가 있었다.
슈퍼셋
: 기존 언어에 새로운 기능과 문법을 추가해서 보완하거나 향상하는 것을 말한다.
안전성 보장
: 타입스크립트는 정적 타이핑을 제공한다. 컴파일 단계에서 타입 검사를 해주고 자바스크립트를 사용했을 때, 빈번하게 일어나는 타입 에러를 줄일 수도 있고 런타임 에러를 사전에 방지할 수 있어서 안전성이 크게 높아진다.
개발 생산성 향상
: 개발 가능한 IDE에서 타입 자동 완성 기능을 제공해주고 이 기능으로 변수와 함수 타입을 추론할 수 있고 리액트에서 porp을 넘겨야 하는지 매번 확인하지 않아도 사용부에서 바로 볼 수 있기 때문이다.
협업 유리
: 타입스크립트를 사용하면 복잡한 애플리케이션 개발/협업에 유리하다. 타입스크립트는 인터페이스
, 제네릭
등을 지원하는데 인터페이스가 기술되면 코드를 더 쉽게 이해할 수 있게 도와준다.
아울러, 자바스크립트에 점진적으로 적용이 가능하다.