728x90

개발 공부를 하다보면 자바스크립트는 동적타입 언어라서 ~~~, 그런데 타입스크립트는 정적 타입 언어이고~~ 이에 따라서 이러저러한 차이가 있다는 글을 많이 보았을 것이다.

 

동적 타입 언어와 정적 타입 언어는 어떠한 차이를 가지는 지, 대표적으로 어떤 언어가 있을까?

 

정적타입 언어(Statically typed language)는 컴파일 시 변수의 타입이 결정되는 언어이다. 따라서, 프로그래머가 변수에 들어갈 값의 형태에 따라 직접 변수의 타입을 명시해줘야 한다.

여기서 컴파일이란, 프로그래머가 작성한 코드가 컴퓨터가 이해하는 언어로 변경되는 과정이라 이해하면 된다,

 

동적타입 언어(Dynamically typed languages)는 컴파일 시 자료형을 정하는 것이 아니라 런타임 시 결정된다. num을 String으로 다시 선언하더라도 타입 에러 없이 컴파일 되고, 다음과 같이 타입 없이 변수만 선언하여 값을 지정할 수 있다. 

여기서 런타임이란 위에서 설명한 컴파일 과정을 거친 후에 사용자에 의해 응용프로그램이 동작되어지는 때를 말한다.

 

PHP, Python, JavaScript와 같은 동적 타입의 언어들은 코드를 빠르게 작성할 수 있게 도와주지만 규모가 크거나 기능이 많은 서비스를 개발하기 시작하면 항상 버그의 위험에 노출되어 버린다. 예를 들어 동료가 개발해서 넘겨준 함수의 return값이 string이라고 생각해서 split 메서드를 사용했으나 number타입인 경우 서비스가 동작하는 런타임에 에러가 발생하고 만약 프로덕션에 배포된 서비스라면 서비스 장애로 이어질 가능성이 높아지게 된다.

 

따라서 타입 스크립트는 자바스크립트에서 단순히 타입설정을 할 수 있다는 특징 뿐 아니라, 프로토타입 기반의 객체지향을 보완하였고, 정적 타입 언어로써 타입과 관련된 에러 발생 가능성을 줄여준 것이다.

 

728x90

'TIL(Today I Learned)' 카테고리의 다른 글

TIL_210209_MQ  (0) 2021.02.09
TIL_210206(2)  (0) 2021.02.06
TIL_210203_Network  (0) 2021.02.04
TIL_210127  (0) 2021.01.27
TIL_210126  (0) 2021.01.26

+ Recent posts