
정적 언어에서는 컴파일 시점에 변수의 타입이 결정되고, 이후 변경할 수 없다.
즉, 컴파일러가 소스코드를 컴파일할 때 타입 검사를 하고, 타입 오류가 발생하면 프로그램이 실행되기 전에 알려준다. (타입 관련 오류를 빠르게 캐치 가능)
Java, C, C++, Go, TypeScript
동적 언어에서는 실행 시점에 변수의 타입이 결정된다.
즉, 변수의 타입을 명시적으로 선언하지 않아도 되고, 실행되는 동안 타입이 동적으로 결정되며 변경될 수 있다.
런타임시에 타입 오류가 발생할수 있으므로 실행 중에 문제가 발견될 가능성이 있다.
JavaScript, Python, Ruby, PHP
TS는 정적 타입 언어에 속한다. 하지만 TS는 JS의 상위 집합으로, 기본적으로 정적 타입 검사를 제공하지만, 동적 타입 언어인 JS의 유연함도 가지고 있다.
정적 타입 검사 : TS는 컴파일 시 타입을 검사하여 오류를 발견해 코드를 실행하기 전에 타입 오류를 찾아 낼 수 있기 때문에 코드 안정성을 높인다.
타입 추론 : 명시적으로 타입을 선언하지 않아도, 컴파일러가 할당된 값에 따라 타입을 추론할 수 있다.
기존의 JS 코드도 그대로 사용할 수 있으며, TS로 작성한 코드는 컴파일 후 순수 JS코드로 변환된다.
요약
정적 타입 언어로, 컴파일 시 타입을 검사하지만 JavaScript의 동적 특성을 유지하며, 개발자의 선택에 따라 엄격한 타입 검사를 사용할 수 있다.