1. 느슨한 타입의 동적언어
자바스크립트는 느슨한 타입(loosely typed)의 동적(dynamic) 언어이다. 즉, 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당( 및 재할당) 가능하다.
let a = 30
a = 'bar'
a = true
2. 느슨한 타입의 동적언어의 문제점
- 변수의 타입을 따로 지정하지 않기 때문에 협업 시 타입이 달라서 중간에 오류가 발생하게 되면, 오류를 찾아내기 어려울 수 있다.
- 코드 실행 도중 타입 에러가 발생할 수 있다.
- 코드를 작성할 때는 에러를 모르고 지나치다가 실제 실행이 되고 나서 에러가 발생하는 현상이 나타날 수 있다.
- 개발시에는 유연한 변수 및 타입 선언이 편리할 수 있어도, 예상하지 못한 에러 발생과 실행 후에 에러 발생 여부를 알 수 있기 때문에 개발 시간이 오래 걸릴 수 있다.
3. [보완] TypeScript
👉🏻 위에 자바스크립트의 느슨한 타입의 동적언어 문제점을 보완하기 위해 Typescript가 등장한다.
타입스크립트는 새로운 언어가 아닌, 자바스크립트 언어로 변환되는 상위 개념의 언어이다.
즉, 자바스크립트에 타입을 부여한 정적 타입언어이다.
4. 추가적으로 알아야 할 것!
1) 정적 타입과 동적 타입의 차이
- 정적 타입 언어는 런타임 이전에 타입이 올바른지에 대한 검사를 시행하며, 동적 타입 언어는 런타임에 프로그램의 타입이 올바른지에 대한 검사를 실행한다.
- 즉, 오류를 발생하는 코드가 존재할 경우, 정적 언어는 컴파일 과정에서 오류를 출력하지만 동적 언어는 해당 구문이 실행되는 시점에서 오류를 출력한다.
2) 컴파일이란?
- 컴파일이란 한 언어로 작성된 소스 코드를 다른 언어로 변환 하는 것
- 다른 언어로 변환하는 것, 즉 고급 언어(java, c언어, python 등) 에서 저급 언어(기계어, 어셈블리어)로 번역하는 과정이다.
3) 트랜스파일이란?
- 한 언어로 작성된 소스코드를 비슷한 수준의 추상화를 가진 다른 언어로 변환하는 과정
- 컴파일의 하위 집합
- 만약, 타입스크립트로 작성된 코드를 컴파일하면 자바스크립트로 변환되는데, 이 두 언어간의 추상 수준이 비슷하다. 이럴 경우에는 트랜스파일링 했다고 표현!
참고 자료
https://ooz.co.kr/416
https://overcome-the-limits.tistory.com/357