Frontend/TypeScript

[ts] 왜 자바스크립트를 사용하는가? (feat. 타입스크립트의 탄생)

양원준 2024. 6. 13. 20:44
728x90

 

초기 웹사이트는 텍스트와 링크로만 구성된 정적인 페이지였다. 사용자가 하이퍼텍스트를 통해 문서 간을 이동하는 것이 전부였고, 동적인 상호작용은 불가능했다. 그러나 웹사이트가 많아지고 사람들이 웹사이트에서 더 많은 액션을 원하게 되면서, 단순한 하이퍼텍스트의 한계를 넘어서는 동적인 페이지가 필요해졌다.

 

자바스크립트는 이러한 요구를 충족시키기 위해 탄생한 언어이다. 자바스크립트는 1995년 넷스케이프(Netscape)의 브렌던 아이크(Brendan Eich)가 10일 만에 만들었다고 알려져 있다. 초기에는 간단한 스크립트 언어로 시작했지만, 다음과 같은 발전을 통해 그 성능과 활용 범위가 크게 확장되었습니다.

  • V8 엔진: 2008년 구글이 만들었고 js를 컴파일하여 매우 빠른 실행 속도를 제공한다. 
  • Node.js: 2009년에 등장하여 자바스크립트를 서버 측 언어로 사용할 수 있게 만들었다. 비동기 I/O와 이벤트 기반 프로그래밍 모델을 도입하여 높은 성능과 확장성을 제공한다. 이를 통해 자바스크립트는 클라이언트와 서버 모두에서 널리 사용되는 언어로 발전하게 되었다.

 

 

 

HTML, CSS, 자바스크립트는 W3C와 같은 표준화 기구에 의해 웹 표준으로 자리 잡았다. 웹 표준은 모든 브라우저에서 웹 페이지가 일관되게 표시되고 동작하도록 보장한다. 이는 웹 개발자들이 특정 브라우저에 종속되지 않고, 보다 안정적이고 예측 가능한 방식으로 웹 사이트를 개발할 수 있게 한다.

 

기업들은 웹 표준을 준수하여 웹 사이트와 애플리케이션을 개발한다. 이는 사용자 경험의 일관성을 보장하고, 다양한 기기와 브라우저에서 동일한 기능과 성능을 제공하기 위함이다. 웹 표준 준수는 또한 접근성과 보안성을 향상시키는 데 중요한 역할을 한다.

 

 

자바스크립트의 장점

  • 호환성: 모든 주요 웹 브라우저에서 기본적으로 지원된다. 이는 개발자들이 추가적인 설정 없이도 자바스크립트를 사용할 수 있다는 의미
  • 풍부한 생태계: 방대한 라이브러리와 프레임워크, 그리고 도구들을 제공한다. React, Angular, Vue.js와 같은 프레임워크는 웹 애플리케이션 개발을 쉽게 만들어 준다.
  • 비동기 처리: 비동기 처리를 기본으로 지원하여, 웹 애플리케이션이 빠르고 응답성 있게 동작할 수 있도록 합니다. 이는 사용자 경험을 크게 향상시킵니다.

 

자바스크립트 단점

  • 동적 타입 체계: 동적 타입 언어로, 변수의 타입이 실행 시간에 결정됩니다. 이는 유연성을 제공하지만, 대규모 프로젝트에서는 타입 관련 오류를 쉽게 발생시킬 가능성이 있다.
  • 런타임 오류: 타입 오류가 컴파일 단계가 아닌 런타임에 발생하기 때문에, 디버깅이 어렵고 예기치 않은 오류를 초래할 수 있다.
  • 복잡한 코드 유지보수: 대규모 코드베이스에서 타입 체계의 부재는 코드의 일관성과 가독성을 저하시켜 유지보수가 어려워진다.

 

 

타입스크립트 탄생 배경

위와 같은 자바스크립트의 단점들 때문에 타입스크립트가 탄생하였다

 

타입스크립트는 자바스크립트의 이러한 단점을 보완하기 위해 마이크로소프트에서 2012년에 개발된 언어이다. 타입스크립트는 자바스크립트를 기반으로 하면서도 정적 타입 검사를 도입하여, 코드의 안정성과 가독성을 높이고자 합니다.

 

타입스크립트 장점

  • 정적 타입 검사: 컴파일 단계에서 타입 오류를 잡아내어, 런타임 오류를 줄인다. 이는 대규모 프로젝트에서 특히 유용하다.
  • 유지 보수 용이성: 타입 정의 덕분에 코드의 일관성을 유지할 수 있다.
  • 점진적 도입 가능: 타입스크립트는 자바스크립트의 상위 집합으로, 기존 자바스크립트 코드와 호환된다. 이는 자바스크립트 프로젝트에 점진적으로 타입스크립트를 도입할 수 있음을 의미한다.

 

쉽게 말하면 자바스크립트에 정적 타입 체계를 입한 자바스크립트의 상위 집합인것!

 

 

 

 


 

추가로 정적 타입 언어와 동적 타입 언어는 무엇일까?

 

동적 타입 언어

변수를 선언할 때 타입을 명시하지 않고, 프로그램이 실행되는 동안에 타입이 결정되는 언어(ex. js, python..)

--> 유연하고 편하긴 하지만 런타임 때 예기치 못한 오류가 뜰 수 있고, 유지보수가 어렵다.

 

정적 타입 언어

변수를 선언할 때 명시적으로 타입을 지정하며, 컴파일 동안에 타입이 결정되는 언어(ex. ts, java..)

--> 타입 검사가 컴파일 단계에서 이루어지므로, 타입 관련 오류를 방지할 수 있다.

 

 

 

 

728x90

'Frontend > TypeScript' 카테고리의 다른 글

[ts] Type vs Interface  (0) 2024.06.16