Javascript 에도 타입이 있다.
타입의 개념을 알고 있다는 것
function add(a, b) {
return a + b;
}
const result = add(2, 5);
console.log(result); // 7
여기서 add
에 전달된 2,5
가 숫자형인 걸 인지하고 있다. 타입스크립트가 없이
다만 자바스크립트는 동적 타입 언어로 함수 선언 시점에는 자료형을 특정 짓지 않는다.
두개의 매개 변수를 받는다는 것만 알고 있다는 뜻이다.
타입이 고정되어 있지 않고 이 함수에서 사용할 타입을 미리 정해두지도 않은 상태에서 전달된 매개변수를 받아 코드를 실행해 보는 것!
그리고 숫자로 실행했을 때 정상 동작 하는 것이다.
하지만 여기서 문자열을 사용해도 동작을 한다.
function add(a, b) {
return a + b;
}
const result = add("2", "5");
console.log(result); // 25
이 경우엔 2개의 변수를 더하는 연산을 수행하는 대신 문자열이기 때문에 연결하는 동작을 수행해서 결과값이 다르게 나왔다
이는 자바스크립트가 충분히 괜찮고 유연한 언어를보여주지만 부족한 점이 있다는 것을 보여준다.
코드를 보완하고 이런 오류를 방지하는 데.. 만약 대규모 프로젝트라면 소스 파일도 아주 많을 것이고 많은 사람들이 동일한 코드 베이스에서 작업하며 함수나 객체를 의도치 않은 방식으로
사용하는 일이 발생하게 된다.
그럴 경우 이런 문제를 부닥치게 되는데 에러를 내놓지 않는다. 이럴 때 타입스크립트가 도움이 된다.
function add(a: number, b: number) {
return a + b;
}
const result = add("2", "5");
console.log(result);
모두 숫자여야 한다는 걸표기 했다. 이경우 함수의 매개 변수로 받을 두 a,b
를 number
로 정했고 이는 add("2","5")
의 부분에 문자열이 틀렸다는 에러를 내뱉어 준다