궁금한게 많은 열아홉
article thumbnail

자바스크립트는 웹 개발 분야에서 가장 인기 있는 프로그래밍 언어 중 하나로, 기술적 진보와 개발 생태계의 확장으로 인해 매우 강력한 도구로 자리 잡았다. 하지만 프로젝트의 규모가 커지고 복잡해지면서 기존 자바스크립트의 문제점들이 두드러지기 시작했다. 이로 인해 많은 개발자들이 타입스크립트를 채택하고 있다.

먼저 아래에는 스택오버플로우에서 조사한 가장 사랑하는 언어 순위를 매긴건데, 보면 타입스크립트가 자바스크립트를 한참 제치고 4위에 올랐다.(자바스크립트는 15위쯤...)

Most loved, dreaded, and wanted

Typescript란

타입스크립트는 Microsoft에서 개발한 오픈 소스 프로그래밍 언어로, 기존 자바스크립트의 문제점을 보완하기 위해 만들어졌다. 타입스크립트는 자바스크립트에 아주 강력한 타입을 부여한 언어라는건데, 그냥 쉽게 얘기하면 타입스크립트는 자바스크립트의 확장판이라고 이해하면 된다.

기존 자바스크립트의 문제점

동적 타이핑

자바스크립트는 동적 타입 언어로, 변수의 타입이 런타임 시점에 결정됩니다. 이는 개발자가 실수를 더 쉽게 저지르게 하며, 타입 오류로 인한 버그 발생 가능성을 높입니다. 예를 들어,

let x = 10; // x는 숫자 타입
x = "Hello"; // x는 이제 문자열 타입
x = true; // x는 이제 불리언 타입

이 예시에서 변수 x는 초기에는 숫자 타입이지만, 나중에 문자열과 불리언 타입으로 변경됩니다. 이러한 동적 타이핑으로 인해 개발자가 변수의 타입을 실수로 잘못 사용하거나 오류를 발생시킬 가능성이 높아집니다.

유연한 문법

자바스크립트는 유연한 문법으로 개발자가 자유롭게 코딩할 수 있습니다. 이는 작은 프로젝트에는 도움이 되지만 큰 프로젝트에서는 유지보수가 어렵고 가독성이 떨어지는 코드를 만들 수 있습니다.

function sum(a, b) {
  return a + b;
}

// 함수에 문자열을 전달하여도 동작하지만, 이는 오류 발생 가능성이 높음
console.log(sum(5, 10)); // 15
console.log(sum("5", "10")); // "510"
console.log(sum("Hello", "World")); // "HelloWorld"

위의 예시에서 sum함수는 숫자를 더하는 함수이지만, 문자열을 전달하더라도 동작합니다. 하지만 이는 함수의 의도와 맞지 않는 사용으로 인해 버그가 발생할 수 있습니다. 타입스크립트를 사용하면 함수의 매개변수와 반환값에 타입을 명시적으로 지정하여 이러한 오류를 방지할 수 있습니다.

제한된 모듈 시스템

기존 자바스크립트는 ES6 이전에는 모듈 시스템이 부족하여 여러 스크립트를 하나로 통합하기 어렵고, 네임스페이스 충돌 등의 문제가 발생할 수 있습니다.

타입스크립트를 사용해야하는 이유

안정성과 신뢰성

타입스크립트는 정적 타입 검사를 통해 런타임 오류를 최소화하고, 코드의 안정성과 신뢰성을 높여줍니다. 따라서 대규모 프로젝트에서도 예측 가능한 동작과 더 적은 버그를 보장합니다.

function divide(a: number, b: number): number {
  return a / b;
}

const result = divide(10, 2); // 타입스크립트는 숫자 타입을 반환한다는 것을 알고 있으므로 문제 없음
console.log(result); // 5

const invalidResult = divide(10, "2"); // 타입스크립트는 문자열 타입을 전달하는 것이 오류라고 감지함
// 컴파일 에러: Argument of type '"2"' is not assignable to parameter of type 'number'.

생산성 향상

타입스크립트는 강력한 타입 추론 기능과 자동 완성, 타입 체크 기능 등을 제공하여 개발자의 생산성을 크게 향상시켜줍니다. IDE의 지원도 풍부하며, 코드 작성과 유지보수가 용이합니다.

협업과 유지보수 용이성

타입스크립트는 명확한 타입 정의로 코드베이스의 가독성을 높여주며, 협업 시에도 팀원들 간의 의사소통을 원활하게 만들어줍니다. 이는 프로젝트의 유지보수를 훨씬 쉽게 만들어줍니다.

 

맺으며...

확실히 타입스크립트가 편하게 해준것은 많지만, 툭하면 내뱉는 에러 때문에 고생하기도 한다. 나는 테오님이 작성하신 이 을 읽고 타입스크립트에 대한 마음가짐과 어디서부터 어떻게 공부해야할 지 감을 잡았다. 타입스크립트가 어려워보인다면 이걸 꼭 읽어보고 시작하길 바란다.

profile

궁금한게 많은 열아홉

@jjin502

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!