타입스크립트 강의를 들으면서 정적언어, 동적언어라는 단어가 나왔는데 많이 들어봤지만 개념이 모호해 먼저 알아보았다.
1) 예시 : C, C++, Java, Swift, Rust
2) 특징
- 코드를 컴파일할 때 변수의 데이터 타입을 검사하고 오류를 찾아낸다. 이는 컴파일러가 소스 코드를 실행하기 전에 타입 오류를 찾을 수 있음을 의미한다.
- 변수의 데이터 타입을 명시적으로 선언해야 한다. 이는 코드의 가독성을 높이고 오류를 방지하는 데 도움이 된다.
- 성능: 정적 언어는 컴파일 시간에 타입 정보를 알기 때문에 실행 시간에 추가적인 타입 검사가 필요하지 않다. 이로써 실행 속도가 빠를 수 있다.
1) 예시 : Python, JavaScript, Ruby, PHP, Perl
2) 특징
- 동적 언어는 코드를 실행할 때 변수의 데이터 타입을 검사한다. 이는 코드 실행 중에 타입 오류를 발견할 수 있음을 의미한다.
- 변수의 데이터 타입을 명시적으로 선언할 필요가 없다. 대신, 변수에 할당된 값의 타입을 기반으로 타입을 추론한다.
- 성능: 동적 언어는 유연하며, 실행 중에 변수의 타입을 동적으로 변경할 수 있다. 이는 개발자에게 높은 유연성을 제공한다.
타입 검사 시점:
정적 언어: 컴파일 타임에 타입 검사를 수행
동적 언어: 런타임에 타입 검사를 수행
타입 선언:
정적 언어: 변수의 타입을 명시적으로 선언해야 함
동적 언어: 변수의 타입을 명시적으로 선언하지 안아도 됨.
유연성:
정적 언어: 코드 실행 전에 타입이 결정되므로 실행 중에 타입을 변경할 수 없다
동적 언어: 실행 중에 변수의 타입을 동적으로 변경할 수 있다
성능:
정적 언어: 컴파일 시간에 타입 정보를 알고 있기 때문에 실행 속도가 빠를 수 있다.
동적 언어: 런타임에 타입 검사가 필요하므로 실행 속도가 상대적으로 느릴 수 있다.
정적 타입 체크: 가장 큰 장점 중 하나는 정적 타입 시스템을 제공한다는 것이다. 변수, 함수, 객체 등에 명시적으로 타입을 지정할 수 있어서 코드를 작성할 때 발생할 수 있는 많은 오류를 사전에 방지할 수 있다.
코드 가독성 및 유지보수성 향상: 명시적인 타입 선언은 코드의 가독성을 향상시키고, 코드를 이해하며 유지보수하는 데 도움을 준다. 특히 큰 규모의 프로젝트에서는 이러한 특성이 더욱 중요하다.
IDE 지원 및 개발 환경 강화: 대부분의 통합 개발 환경(IDE)은 타입스크립트를 지원하며, 코드 자동 완성, 리팩토링, 디버깅 등을 통해 개발자의 생산성을 향상시킨다.
풍부한 에코시스템 및 타입 정의: 자바스크립트의 생태계를 기반으로 하면서, 타입스크립트는 다양한 라이브러리와 프레임워크의 타입 정의 파일을 제공한다. 이는 외부 라이브러리를 사용할 때 타입 안정성을 유지할 수 있도록 도와준다.
ES6+ 지원: 타입스크립트는 ECMAScript의 최신 버전을 지원하므로, 최신 자바스크립트 문법 및 기능을 활용할 수 있다.
클래스, 모듈, 인터페이스 등의 고급 기능: 타입스크립트는 자바스크립트에는 없는 인터페이스, 제네릭, 데코레이터 등의 고급 기능을 제공하여 객체지향 및 함수형 프로그래밍 패턴을 더 쉽게 구현할 수 있다.
리팩토링 및 크로스 플랫폼 개발: 타입스크립트는 리팩토링을 용이하게 해주는 강력한 도구들을 제공하며, 브라우저뿐만 아니라 서버 사이드(Node.js) 및 모바일 애플리케이션 개발 등 다양한 플랫폼에서 사용될 수 있다.