
🕵️♀️ 타입스크립트란?
타입스크립트는 자바스크립트에 타입을 얹은 정적언어이다. 따라서, 자바스크립트에서 확장된 언어라고 생각하면 될 것 같다.
✍ 타입스크립트의 탄생
처음 자바스크립트는 브라우저에서만 동작하는 많은 기능이 없는 빠르고 유연한 언어였다. 웹 시장이 발전하면서 자연스럽게 브라우저에 많은 기능을 추가하기 위해 자바스크립트가 더 발전하게 되었다. 웹을 넘어서 다른 환경에서도 자바스크립트를 사용하면서 부작용이 발견되었다. 대표적인 부작용은 타입인데 이러한 부작용을 커버하기 위해 타입스크립트가 탄생하게 되었다.
✍ 타입스크립트 특징
정적타입 언어 ➕ 컴파일(트랜스파일) 언어
타입스크립트는 자바스크립트로 컴파일(트랜스파일)된다.
즉, 자바스크립트를 사용할 수 있는 곳에는 어디든 활용할 수 있다는 범용성과 정적타입 언어의 안정성, 표현력 또한 갖추고 있다.
✍ 동적언어 VS 정적언어
동적언어 : 런타임 시점에 타입이 결정되고 오류를 확인할 수 있다. 대표적인 언어로는 자바스크립트가 있다.
정적언어 : 컴파일 시점에 타입이 결정되고 오류를 확인할 수 있다. 대표적인 언어로는 자바, 타입스크립트가 있다.
💬 동적언어와 정적언어의 차이는 타입 결정 시점과 오류 확인 시점이라고 할 수 있다.
❓ 동적언어, 정적언어의 장점
동적언어 : 초기 개발 속도가 빠를 수 있지만 개발자가 실수할 경우에 사용자가 해당 에러를 확인할 수 있다.
정적언어 : 안정적으로 코드를 작성할 수 있다.
💬 내 생각이지만 개발 속도에 차이는 사실 동적언어, 정적언어 누가 빠르고 느리다고 단언하기 힘들 것 같다. 정적언어의 경우, 컴파일 시점에서 에러를 확인하여 수정하고 배포하기 때문에 코드 작성이 느려보일 수 있지만 에러를 확인하지 못 하고 배포하여 나중에 해당 에러를 확인하고 수정하는 동적언어에 비해 빠를 수도 있다. 따라서, 어떠한 프로덕트를 배포하는 데 있어서 위와 같은 이유로 정적언어가 더 장점이 많아 보인다.
크게 두 가지 사용 이유가 있다.
1. 안정성
- 정적타입 언어이며 컴파일 언어이다.
=> 타입을 변수에 지정하기 때문에 실수를 개발자가 실수를 줄일 수 있다.
=> 컴파일 시점에 에러를 확인할 수 있다.
- 표현력
- 타입으로 개발자가 코드를 유추하고 이해할 수 있다.
function add(a:string, b:string):string { return a + b; }위 코드를 보고 함수명과 인자와
return타입을 통해 어떤 역할을 하는 함수인지 유추하고 이해할 수 있다.
function sum(num1, num2){
return num1+num2;
}
console.log(sum(1)); // NaN
console.log(sum(1, 2)); // 3
console.log(sum(1, 2, 3)); // 3
console.log(sum("a", "b")); // ab
위 예제는 자바스크립트 예제로
sum함수에 파라미터는 2개를 받고 있지만 인자 전달은 타입부터 개수까지 다르다. 하지만, 에러 없이 출력되는 것을 확인할 수 있다.
function sum(num1:number, num2:number){
return num1+num2;
}
console.log(sum(1));
console.log(sum(1, 2)); // 3
console.log(sum(1, 2, 3));
console.log(sum(a, b));
위 예제는 타입스크립트 예제로
sum함수에 파라미터 2개를 받고 있고 number 형으로 타입을 명시해줬다. 결과는 전달된 인자의 타입과 개수가 맞는 것만 에러 발생하지 않으며 나머지는 에러로 표시된다.
위 자바스크립트 예제와 타입스크립트 예제로 개발자가 의도한 결과를 잘 출력하기 위해서는 타입스크립트를 사용하는 것이 적절하다고 볼 수 있을 것 같다.