TypeScript is is a "Superset" to JavaScript
타입스크립트는 자바스크립트를 모두 포함한 기능을 갖춘다.

TypeScript adds static typing typing to JavaScript
타입스크립트는 정적 타이핑을 지원한다.
JavaScript on its own is dynamically typed
자바스크립트
는 정적 타이핑을 지원한다.

JavaScript는 동적 타이핑을 지원한다의 의미
function add (a,b) {
return a + b;
}
let result = add (2,5);
console.log(result); // 7 출력
위 코드에서 console.log를 찍었을 때, 7이 나타난다.
function add 에는 자료형이 정해져 있지 않기 때문에
2와 5를 자동으로 숫자형 자료형이라는 것을 알아보고
결과를 도출해내 주기 때문이다.
function add (a,b) {
return a + b;
}
let result = add ('2','5');
console.log(result); // 25 출력
위 코드는 함수에서의 변형은 없지만 들어가는 인자가
더이상 숫자형이 아닌, 문자형으로 변경되었다.
하지만 대견스러운 JavaScript는 우리가 의도한 것이
숫자형인지, 문자형인지 알아서 그 나름의 덧셈을 수행해낸다.
(물론 문자열의 시그널과 숫자열의 시그널을 제공하지만서도..)
이 때의 +연산자는 역할이 살짝 바뀌게 된 것인데,
두 매개 변수 2와 5를 더하는 것에서
두 문자열 2와 5를 연결하는 동작을 수행하는 것으로 역할이 살짝 바뀐 것이다.
JavaScript는 이미 충분히 괜찮은 언어이지만,
대규모 프로젝트에서는 부족한 점이 있다.
함수나 객체를 의도치 않게 사용하는 일을 예방하기 위해
TypeScript를 사용하게 되는 것이다.
function add (a: number, b:number) {
return a + b;
}
let result = add('2', '5'); // '2' 와 '5' 아래에 빨간 밑줄이 그인다.
console.log(result);
위의 코드는 타입스크립트로 작성한 코드인데,
매개변수 a : number라는 조건과
매개변수 b : number 라는 조건이
명확히 주어진다.
따라서 문자열인 '2' 와 '5' 에서는 빨간 밑줄이 그이게 되는데
이를 통해, 실행하지 않고도 코드 작성과정에서 문제가 있다는 사실을 인지할 수 있게 한다.
이런 이유만으로도 타입스크립트를 사용할 가치는 충분하다고 한다.