데이터의 타입을 미리 정해 개발자가 의도하지 않은 결과를 방지할 수 있습니다.
타입 안정성을 보장하지 않는 자바스크립트에서는 다음과 같은 문제가 발생할 수 있습니다.
// 두 숫자를 받아 더하는 함수
function sum(a, b){
return a + b;
}
sum(2, 3) //5
sum('2', '3') // '23'
위 코드의 문제점은, 숫자를 받아서 더하는 함수를 의도했지만 숫자가 아닌 문자열을 parameter에 전달했을 때도 코드가 실행된다는 것입니다.
타입스크립트는 데이터의 타입을 미리 지정해 이처럼 타입에 맞지 않는 값을 입력받았을 때 의도하지 않은 결과가 나오는 것을 방지할 수 있습니다.
타입스크립트를 사용하면 타입을 지정해주는 것 뿐만 아니라 발생할 수 있는 에러를 코드를 실행하기 전에 빠르게 발견할 수 있습니다.
즉 코드를 실행하지 않고도 에러를 발견해 수정할 수 있어서 편리합니다. (기존의 자바스크립트에서 에러를 확인하려면 코드를 실행하고 콘솔에서 에러를 확인하는 불편한 과정을 거쳐야 합니다.)
위에서 살펴본 예시 이외에도 자바스크립트를 사용했을 때의 문제점들은 아래와 같습니다.
// 두 숫자를 받아 나누는 함수
functon sum(a, b){
return a / b;
}
//name이라는 속성을 갖는 객체
const obj = {name: 'apple'};
sum(10) //NaN
// 👉 값을 하나만 전달했는데도 에러를 발생시키지 않았다.
sum('x') //NaN
// 👉 값이 숫자가 아닌 문자열인데도 + 하나만 전달했는데도 에러를 발생시키지 않았다.
obj.sayHello() // TypeError: obj.sayHello() is not a function
// 👉 코드를 실행해야지만 에러를 알 수 있다. 즉 런타임 이전에는 어떤 문제가 있는 지 알 수가 없다.