들어가며
리액트 국비과정을 수료했지만 수료하는 날까지 타입스크립트, nextJS는 손도 대지 못하고 끝냈었는데 이렇게 다시 하게 됐다. 당시에는 리액트 리덕스를 배우기도 벅찼던 시기이기도 했고 타입스크립트부터는 나 말고 다른 수강생들도 어려움을 많이 겪어 학원 차원에서 원래라면 2주에 학습하고 1주 동안 프로젝트를 시켰었는데 이때 이례적으로 그냥 자바스크립트로 진행을 시켜서 아 정말 어려운가 보다 하고 넘어갔었는데 우연히 이 녀석과 다시 만나게 되었다.
타입스크립트의 탄생
타입스크립트는 마이크로소프트에서 개발하고 관리하는 오픈 소스 프로그래밍 언어이며, 자바스크립트의 슈퍼셋이라고 한다.
이는 자바스크립트의 모든 기능을 포함하면서도, 추가적으로 정적 타입 체크와 클래스 기반 객체 지향 프로그래밍 등을 지원해준다.
특징
- 정적 타입 : 변수의 타입을 미리 지정하여 컴파일 시점에 타입 오류를 잡아낼 수 있다.
- 객체 지향 프로그래밍 : 클래스, 인터페이스, 상속 등 객체 지향 프로그래밍의 특징을 제공한다.
- ES6/ES7 지원 : 최신 자바스크립트 문법을 지원하며, 이를 ES5로 컴파일할 수 있다.
장점
- 에러 감지 : 컴파일 시점에서의 타입 체크로 인해 런타임 에러를 줄일 수 있다.
- 코드 품질 향상 : 타입스크립트의 강력한 타입 시스템은 코드의 품질을 향상하고, 버그 발생 가능성을 줄여준다.
- 강력한 개발 도구 : 타입스크립트는 자동 완성, 타입 추론, 코드 리팩토링 등 강력한 개발 도구를 제공한다.
단점
- 학습 곡선 : 자바스크립트에 비해 복잡한 문법과 추가적인 개념을 학습해야만 사용이 가능하다.
- 개발 속도 : 타입을 정의하고 체크하는 과정이 추가되므로 초기 개발 속도가 느려질 수 있다.
- 라이브러리 호환 문제 : 모든 자바스크립트 라이브러리가 타입스크립트와 완벽하게 호환되지 않을 수도 있다.
자바스크립트와는 어떻게 다른가?
우선 자바스크립트의 경우 사전에 변수 타입을 지정하지 않기 때문에 아래와 같이 작성했었다.
let message = "hello";
message = 123;
그렇다면 타입스크립트에서는?
let message: string = "hello";
message = 123; // 이렇게 작성할 경우 컴파일 에러가 난다.
이 코드에서 컴파일 에러가 나는 이유는 message 변수에 문자열 "hello"를 할당하고, 이 변수의 타입을 string으로 지정했기 때문에 문자열이 아닌 숫자를 할당하려고 할 경우 타입 에러가 발생하게 된다. 이와 같이 타입스크립트는 변수의 타입을 미리 지정하고, 타입에 따라 할당할 수 있는 값을 제한함으로써 코드의 안정성을 높이고 버그를 줄여줄 수 있다고 한다. 자바와 굉장히 유사해서 공부하기 조금은 나을 것 같다.
마치며
무조건 타입스크립트만 사용하는 것이 아니라 대규모 프로젝트에서 코드의 품질과 관리를 향상할 수 있어서 회사에서 많이 사용하는 편이고 이런 장점을 살리기 위해선 추가적인 학습이 필수적이기 때문에 무조건 좋다? 는 아니라고 하는데 학습 비용만 들어간다면 단점이라고 하기엔 좀 그렇다 생각이 든다.
자바스크립트만 공부할 때는 늘 타입이 자동 지정이 되어서 처음 타입스크립트를 마주했을 때 벽처럼 느껴졌는데 자바를 공부하고 보니 유사한 점이 많아서 배우기 괜찮아 보인다는 생각이 들었고 직관적이라 코드를 읽을 때 가독성 면에서 차이가 많이 느껴졌다. 요즘 프론트 공부를 시간 될 때 하고 있는데 재미는 프론트가 확실하다는 느낌이 들었다.
쓰임 있는 사람이 되기 위해 노력 중입니다.