[JavaScript] 느슨한 타입의 동적 언어

Mark·2022년 8월 8일
0
post-thumbnail

1. 느슨한 타입의 동적언어

자바스크립트는 느슨한 타입(loosely typed)의 동적(dynamic) 언어이다. 즉, 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당( 및 재할당) 가능하다.

let a = 30 // a는 int
a = 'bar' // a가 string으로 재할당
a = true // a가 boolean으로 재할당됨 

2. 느슨한 타입의 동적언어의 문제점

  • 변수의 타입을 따로 지정하지 않기 때문에 협업 시 타입이 달라서 중간에 오류가 발생하게 되면, 오류를 찾아내기 어려울 수 있다.
  • 코드 실행 도중 타입 에러가 발생할 수 있다.
  • 코드를 작성할 때는 에러를 모르고 지나치다가 실제 실행이 되고 나서 에러가 발생하는 현상이 나타날 수 있다.
  • 개발시에는 유연한 변수 및 타입 선언이 편리할 수 있어도, 예상하지 못한 에러 발생과 실행 후에 에러 발생 여부를 알 수 있기 때문에 개발 시간이 오래 걸릴 수 있다.

3. [보완] TypeScript

👉🏻 위에 자바스크립트의 느슨한 타입의 동적언어 문제점을 보완하기 위해 Typescript가 등장한다.

타입스크립트는 새로운 언어가 아닌, 자바스크립트 언어로 변환되는 상위 개념의 언어이다.

즉, 자바스크립트에 타입을 부여한 정적 타입언어이다.


4. 추가적으로 알아야 할 것!

1) 정적 타입과 동적 타입의 차이

  • 정적 타입 언어는 런타임 이전에 타입이 올바른지에 대한 검사를 시행하며, 동적 타입 언어는 런타임에 프로그램의 타입이 올바른지에 대한 검사를 실행한다.
  • 즉, 오류를 발생하는 코드가 존재할 경우, 정적 언어는 컴파일 과정에서 오류를 출력하지만 동적 언어는 해당 구문이 실행되는 시점에서 오류를 출력한다.

2) 컴파일이란?

  • 컴파일이란 한 언어로 작성된 소스 코드를 다른 언어로 변환 하는 것
  • 다른 언어로 변환하는 것, 즉 고급 언어(java, c언어, python 등) 에서 저급 언어(기계어, 어셈블리어)로 번역하는 과정이다.

3) 트랜스파일이란?

  • 한 언어로 작성된 소스코드를 비슷한 수준의 추상화를 가진 다른 언어로 변환하는 과정
  • 컴파일의 하위 집합
  • 만약, 타입스크립트로 작성된 코드를 컴파일하면 자바스크립트로 변환되는데, 이 두 언어간의 추상 수준이 비슷하다. 이럴 경우에는 트랜스파일링 했다고 표현!

참고 자료

https://ooz.co.kr/416

https://overcome-the-limits.tistory.com/357

profile
개인 공부 정리

0개의 댓글