// JavaScript
function add(num1, num2) {
console.log(num1 + num2);
}
// add(); // NaN
// add(1); // NaN
add(1,2);
// add(3,4,5); // 7
// add("hello", "world"); // helloworld
위 코드에서 add() 함수는 인자로 받은 숫자 2개를 더하는 javaScript 함수이다.
그런데 add("hello", "world")나 add(3,4,5)처럼 타입이나 형태에 오류가 있을 때, 이러한 오류를 JavaScript는 런타임 시 알 수 있고, 그 전엔 어떠한 경고도 주지 않는다. 이로 인해 디버깅 시 어디서 문제가 발생했는지 찾기 어려울 수 있다.
그러나 TypeScript 또는 Java와 같은 정적언어는 컴파일 시 오류를 발견할 수 있어 코드의 정확성을 높일 수 있다.
아래는 위 코드를 TypeScript로 작성한 것이다.
// TypeScript 변환
function add(num1: number, num2: number) { // 타입 지정
console.log(num1 + num2);
}
javaScript와 동일하게 함수의 인자에 잘못된 타입이나 형태를 넣어 호출해보자.
이렇게 TypeScript로 작성할 경우, 컴파일 시 미리 오류를 발견할 수 있다.
요약
동적언어 (e.g., JavaScript) : 런타임 시 타입 결정 및 오류 발견
정적언어 (e.g., TypeScript, Java) : 컴파일 시 오류 발견