TypeScript vs javascript
요즘 많이 사용 되는 JavaScript 언어는 TypeScript라는 개선된 언어의 등장으로 혼란이 있습니다.
JavaScript가 더 좋다 vs 아니다. 무조건 TypeScript가 좋다로 싸우기 때문이죠
JavaScript는 원래는 웹 페이지에 생명을 불어넣는 언어에서 시작하여 지금은 크게 확장되어 서버 개발까지 사용하고 있습니다.
특히 Front-End와 Back-End에서 고루 사용되는 언어이기 때문에 익숙한 언어입니다.
하지만 TypeScript는 JavaScript에 비해 생소할 수 있습니다.
TypeScript는 JavaScript의 단점을 극복하고자 나온 새로운 언어이기 때문입니다.
당연히 TypeScript가 좋은 게 아닐까?라는 생각을 할 수 있으나 두 언어의 차이를 알아야 선택할 때 좋은 기준점이 될 것입니다. 무조건 새로운 언어가 좋을까요?
한번 알아보죠.
JavaScript와 TypeScript의 차이
이 둘의 가장 큰 차이점은 Type을 제대로 정의해 주는지입니다.
JavaScript는 오랫동안 타입에 대해 관대한 포지션으로 있었습니다.
다만 타입에 제약이 없으니 어떤 타입의 값을 가지고 있는지 개발자가 알기 어려운 부분이 있었습니다.
그 어려움을 해결하고자 나온 것이 TypeScript입니다.
JavaScript는 스크립팅 언어로 알려져 있습니다. TypeScript는 JavaScript 상위 집합이지만 객체 지향 컴파일 언어입니다. TypeScript는 객체 지향 프로그래밍을 추구하기 때문에 데이터 추상화에 중점을 두고 있습니다.
JavaScript는 클라이언트 측 스크립팅 언어이며 사용자가 웹 브라우저를 열고 웹 페이지를 요청하면 해당 요청이 웹 서버로 이동합니다. 또한, 멀티 스레딩, 멀티 프로세싱 기능이 없습니다.
웹 페이지를 대화식으로 만드는 프로그래밍 언어로써 폼 유효성 검사 및 애니메이션 적용, 이벤트 생성 등을 수행합니다.
타입스크립트는 컴파일러를 사용하여 ts 파일을 js 파일로 변환 합니다. 기존 JavaScript를 통합하여 사용할 수 있습니다. 그리고 모든 JavaScript 기능을 계승하여 사용이 가능합니다.
정적 유형의 검사를 제공하며 클래스 기반 객체를 만들 수 있습니다.
앞서 객체 지향 프로그래밍 언어라고 했습니다. 그렇기 때문에 상속과 캡슐화, 생성자를 기본적으로 지원합니다.
예시 코드
- 자바 스크립트
function func(a, b) {
return `${a} == ${b}`
}
코드를 보면 어떤 타입의 값을 받고, 반환하는지 명확하지 않습니다.
- 타입 스크립트
function func(a: number, b: string): string {
return `${a} == ${b}`
}
타입스크립트는 위와 같이 타입을 확실하게 선언해야 합니다.
물론 선언하지 않고 사용해도 타입 추론 기능으로 대체되지만 그래도 타입이 선언되는 것이 javascript를 대체해서 사용하는 이유가 됩니다.
각 언어의 장단점
TypeScript
JavaScript는 런타임 에러를 발생시킵니다. 즉, 프로그램이 동작 하는 중에 에러가 발생하며, 이것은 큰 단점이 됩니다. 컴파일 에러를 발생시키는 언어는 컴파일 과정에서 에러를 잡기 때문에 디버깅을 빠르게 할 수 있고, 사용자가 에러를 볼 확률이 낮습니다.
그래서 TypeScript로 만든 프로그램이 안정성이 높다고 할 수 있습니다.
그리고 IDE와 결합성이 좋습니다. 객체 지향 프로그래밍 언어는 레퍼런스 추적이 쉽기 때문에 디버깅 할 때 편합니다. 이것은 개발자의 생산성과 직결됩니다. 빠른 코드 추적은 빠른 대응을 만들어 냅니다.
마지막으로 코드 가독성이 좋습니다. 타입이 모두 선언되어 있고, 어떤 클래스나 인터페이스를 보더라도 명확한 입출력을 알 수 있기 때문에 코드 분석이 쉽습니다.
코드 가독성을 좋게 짜는 JavaScript 프로그래머도 있겠지만 그렇지 못한 개발자가 훨씬 많다는 것을 안다면 이 특징은 큰 장점이 됩니다.
JavaScript
JavaScript는 유연성이 좋습니다. 특정 변수를 하나 선언하면 여러 번 다채롭게 타입을 변경하면서 사용할 수 있습니다. 어떤 개발자에게는 매우 중요한 특징이 될 수 있습니다. 개발을 할 때 제약이 많으면 퀄리티 높은 코드를 작성하는데 방해가 될 수 있기 때문이죠.
이 유연성 장점은 코드 생산성과 연결됩니다. 어떤 경우 JavaScript는 3~4줄이면 충분한 코드가 TypeScript에서는 10줄 이상 작성해야 하는 경우가 발생하기도 합니다. 앞서 코드 가독성으로 생산성이 높아진다고 했지만 유연성을 통한 JavaScript 코드 생산성도 무시하지 못할 정도로 큰 장점이 됩니다.
마무리
JavaScript와 TypeScript에 대해 오늘 이야기해 보았습니다.
각 언어는 서로 다른 특징을 가지고 있습니다. 어느 한쪽이 좋다기보다 어떤 문제를 해결할 때 어떤 도구를 사용할지 알아야 좋은 선택을 할 수 있습니다.
그 관점에서 어떤 언어를 선택하든 상관이 없습니다. 각 언어의 차이와 특징만 잘 알고 있으면 필요할 때 꺼내 쓸 수 있는 그런 개발자가 되어야 하겠습니다.