TypeScript
신입 때 프로젝트를 진행 했을 때 TypeScript로 코드를 짠 적이 있는데 제대로 알지 못하여 anyScript의 세계로 가고 있는 나를 반성하며 현재 계속해서 주목 받고 있는 TypeScript 알아보도록 하겠습니다. 타입스크립트는 유명한 Microsoft의 오픈 소스 라이브러리로 자바스크립트보다 더 정확하고 안전한 자바스크립트를 사용 할 수 있게 정적 타입을 지원하는 언어이다 한마디로 superset of JavaScript!!
왜 TypeSciprt를 사용해야 하는가?
JavaScript의 특징은 프로그램이 런타임 될 때 타입이 동적으로 결정된다는 것입니다. 이는 유연한 코딩을 가능하게 하지만, 코드를 읽을 때 변수나 함수의 타입을 파악하기 어렵고, 런타임 중에 예기치 못한 에러가 발생할 수 있다는 단점이 있습니다. 타입스크립트는 타입을 보장하면서 개발을 할 수 있기 때문에 사전에 에러를 잡아낼 수 있습니다. 또한 객체 지향 프로그래밍(OOP)이 가능하여 효율적인 개발을 할 수 있습니다.
그렇다면 왜 타입스크립트를 사용해야 할까요?
에러의 사전 방지: 타입스크립트는 타입 검사를 통해 일부 에러를 사전에 방지할 수 있습니다. 컴파일 단계에서 타입 에러를 확인할 수 있어 개발자가 실수를 미리 인지하고 수정할 수 있습니다. 코드 가이드 및 자동 완성: 타입스크립트는 코드 가이드와 자동 완성 기능을 제공합니다. 이는 개발 생산성을 향상시키고 코드 작성 시 일관성을 유지할 수 있도록 도와줍니다. 특히 Visual Studio Code와 같은 툴은 내부적으로 타입스크립트로 작성되어 있어 코드 가이드와 자동 완성을 활용할 수 있습니다. 타입스크립트에서 사용되는 주요한 타입에는 다음과 같습니다:
TypeSciprt의 대표적이 Type
undefined & null
" | "를 사용하여 지정 타입 또는 undefined, null 타입을 지정할 수 있습니다.
any
any 타입은 어떠한 타입의 값도 담을 수 있습니다. 하지만 타입스크립트의 사용 이유와는 멀기 때문에 가능한 사용을 피하는 것이 좋습니다.
void
함수에서 아무것도 반환하지 않는 경우 void 타입을 사용합니다. 변수명에는 거의 사용되지 않습니다.
Tuple
튜플은 배열의 길이가 고정되고 각 요소의 타입이 지정된 배열 형식입니다.
Enum
열거형은 특정 값(상수)들의 집합을 나타내는 타입입니다.
object
모든 object 타입을 담을 수 있습니다. 그만큼 광범위한 타입이기 때문에 가능한 사용을 피하는 것이 좋습니다.
Type Alias
개발자가 원하는 새로운 타입을 정의할 수 있는 Alias입니다. 이를 사용하여 새로운 타입을 만들고 변수에 부여할 수 있습니다.
타입스크립트는 코드의 안정성과 가독성을 높여주는 강력한 도구입니다. 정적 타입 체크와 코드 가이드, 자동 완성 기능을 통해 개발 생산성을 향상시킬 수 있습니다.
타입스크립트의 단점
타입스크립트를 사용하는 것은 개발 규모가 커질수록 타입 설정이 번거로워지고 시간이 오래 걸릴 수 있다는 단점이 있습니다.
타입스크립트는 타입 강제화를 위해 코드에 명시적으로 타입을 지정해야 합니다.
타입 추론을 활용하여 자동으로 타입을 추론할 수도 있지만, 배열, 객체, 함수와 같은 복잡한 타입의 경우 사용자가 타입을 선언하여 제한해주어야 합니다. 이러한 과정은 자바스크립트로 개발하는 것보다 시간이 더 소요될 수 있습니다.
안정성을 선택하는 대신에 개발 소요기간은 더욱 더 필요한 상황이 발생할 수 있습니다.
또한, 타입을 지정하지 않는 경우 타입 추론을 해야 하는데, 타입을 추론하기 어려운 경우에는 명시적인 형 변환을 하거나 제네릭을 사용하여 어떤 타입이든 동작할 수 있도록 선언해야 합니다. 이러한 작업을 하다 보면 코드가 길어지고 가독성이 떨어질 수 있는 문제가 있습니다.
또 다른 주의할 점은 타입스크립트는 자바스크립트를 기반으로 하기 때문에 근본적인 자바스크립트 오류는 해결할 수 없다는 것입니다. 타입스크립트는 정적 타입 검사를 제공하지만, 자바스크립트의 동적 특성으로 인해 난해한 버그가 여전히 발생할 수 있습니다. 따라서, 타입스크립트를 사용할 때에는 타입 설정에 들이는 시간과 코드의 가독성을 고려해야 합니다.
개발 규모가 커지면서 타입스크립트의 장점인 타입 안정성과 가독성 향상이 더욱 중요해지지만 초기 설정과 추가적인 작업에 시간을 할애해야 한다는 점을 생각하여야 합니다.
하지만 개발자로서의 의견을 더하면 타입스크립트가 실시간으로 에러를 체크해주는 것이 훨씬 더 개발 소요 시간이 줄어드는 효과가 크다고 생각됩니다.
타입스크립트 추천합니다.
'FrontEnd' 카테고리의 다른 글
NextJS (0) | 2024.03.21 |
---|---|
JavaScript Closures (0) | 2024.03.20 |
JWT (0) | 2024.03.20 |
JavaScript 얕은 복사와 깊은 복사 (0) | 2024.03.19 |
What is JavaScript? And React? (1) | 2024.03.19 |