Typescripts는 피할 수 없는 대세가 되었습니다. 구직사이트에서 웹 개발자만 검색해봐도 많은 IT기업들은 타입스크립트 사용자를 우대하거나 필수로 하고 있는 것을 볼 수 있습니다.
Microsoft에서 현재 설계 개발을 지속적으로 이끌어 가고 있으며, 2022년 Stack Over Flow 설문 조사에서 개발자가 사랑하는 언어 3위를 차지하고 있는 언어입니다.
https://survey.stackoverflow.co/2022/#most-loved-dreaded-and-wanted-language-want
타입스크립트는, 자바스크립트 기반으로 추가적인 코드 작성 ( 타입 지정 등)을 해준 후 다시 자바스크립트로 컴파일되어 사용되기 때문에 자바스크립트 슈퍼셋(superset) 같은 개념입니다. 결국 자바스크립트로 컴파일되어 사용되는데, 그럼 굳이 타입스크립트를 쓰는 이유는 뭘까?
타입스크립트 vs 자바스크립트
Javascript Typescript
동적타입 언어 | 정적타입 언어 |
인터프리터 언어 | 컴파일 언어 |
독립적으로 사용가능 | 자바스크립트에 의존적임 (자바스크립트로 컴파일된 후 실행) |
좀 더 유연함 (타입에 제한을 받지 않으므로) | 더 나은 구조와 간결함, 일관성, 재사용성 |
.js 확장자 | .ts 확장자 |
작고 간단한 프로젝트에 적합함 | 복잡한 프로젝트에 적합함 |
자바스크립트 대신 타입스크립트를 선택해야 하는 이유
모든 차이점은 근본점은 동적타입이냐, 정적 타입이냐입니다. 모든 변수나 객체를 타입을 지정하지 않는다는 점은 자바스크립트의 가장 큰 장점이자 단점은 점입니다. 그 점을 보완해서 나온 것이 "타입"스크립트입니다.
1. 에러 사전 방지
타입스크립트를 사용함으로써 자바스크립트 에러 15%를 미리 예방할 수 있다는 연구가 있다고 합니다. 타입 스크립트를 설치하면 tsc라는 명령어로 타입 스크립트 파일을 컴파일할 수 있습니다. 타입 스크립트는 코드에 목적을 명시하고 목적에 맞지 않는 타입의 변수나 함수들에서 에러를 발생시켜 버그를 사전에 제거합니다. 또한 코드 자동완성이나 실행 전 피드백을 제공하여 작업과 동시에 디버깅이 가능해 생산성을 높일 수 있습니다.
// math.js
function sum(a, b) {
return a + b;
}
sum(10, 20); // 30
sum('10', '20'); // 1020
// math.ts
function sum(a: number, b: number) {
return a + b;
}
sum('10', '20'); // Error: '10'은 number에 할당될 수 없습니다.
2. 강력한 생태계와 IDE에서 강력한 기능을 제공
타입스크립트는 그리 오래되지 않은 언어임에도 불구하고 강력한 생태계를 가지고 있습니다. 대부분의 라이브러리들이 타입스크립트를 지원하며 마이크로소프트의 비주얼 스튜디오 코드(VSCode)를 비롯해 각종 에디터가 타입 스크립트 관련 기능과 플러그인을 지원합니다.
3. 객체 지향 언어 스타일로 코드를 작성가능
자바스크립트가 ES Next부터 Class가 도입되어 온전한 객체 지향 언어의 형태를 띠게 되었는데, 이때 타입스크립트에서는 타입의 포맷을 지정하는 인터페이스, 가상 클래스 등의 객체 지향 언어에서 사용하는 문법들을 추가로 지원하면서 객체 지향 개발을 할 수 있도록 구성이 되어있습니다.
타입스크립트의 단점
1. 개발의 규모에 따른 타입 설정의 번거로움, 비용 증가
개발의 규모가 커지면 커질수록 타입 설정이 귀찮고 시간이 오래 걸릴 수 있다는 문제가 생길 수 있습니다. 타입스크립트는 타입 강제화를 위해 사용자가 코드에 타입을 선언해서 미리 제한해야 합니다. 이 과정에서 자바스크립트로 개발할 때 보다 시간이 더욱 소요될 수 있습니다.
2. 코드 가독성 저하
타입스크립트는 타입을 지정하지 않는다면, 타입을 추론해야 하는데, 타입을 추론하기 힘든 경우, 컴파일러에게 알려주는 형 변환을 하거나, 제네릭을 사용하여 어떤 타입이 들어오더라도 동작할 수 있도록 선언해야 합니다. 문제는, 이렇게 코드를 작성하다 보면 코드가 엄청 길어질 수 있는 문제가 있습니다.
3. JS 근본적인 오류 해결 불가능
타입스크립트를 활용해도 근본적인 자바스크립트 오류는 해결할 수 없습니다. 타입 스크립트는 자바스크립트의 슈퍼셋 언어이지만, 결국은 자바스크립트이기 때문에 자바스크립트에서 발견하기 힘든 난해한 버그가 여전히 타입 스크립트에서 나타날 수 있습니다.
타입스크립트를 왜 사용해야 하며, 이용해서 어떻게 하면 더 좋은 코드를 짤 수 있을지를 항상 고민하고자 합니다.
국내 많은 개발자분들이 모여 타입 스크립트에 대한 문서를 한글로 잘 정리해놓았습니다. 참고하세요
https://typescript-kr.github.io/
TypeScript 한글 문서
TypeScript 한글 번역 문서입니다
typescript-kr.github.io
'취준' 카테고리의 다른 글
JavaScript의 비동기 처리? (0) | 2022.11.30 |
---|---|
REST API vs GraphQL (0) | 2022.11.23 |
Redis를 많이 사용하는 이유? (2) | 2022.11.22 |
엘리스 SW 엔지니어 트랙 2기 합격 후기 (5) | 2022.03.21 |
댓글