SUE 개발 블로그

TypeScript ) 타입스크립트의 특징 ( 타입 시스템 ) 본문

TypeScript

TypeScript ) 타입스크립트의 특징 ( 타입 시스템 )

이수광 2024. 2. 22. 17:27

 

꼭 알아야 할 배경지식으로 타입 시스템이 있다.

타입 시스템
모든 프로그래밍 언어는 타입 시스템을 갖고 있다.

타입 시스템은 크게 2가지로 나눌 수 있다. ( 정적 타입, 동적 타입 )

 

자바스크립트가 사용하는 동적 타입 시스템은 변수의 타입들을 코드가 실행하는 도중에 결정한다.

= 변수의 타입을 직접 정의 안함  = 변수의 타입을 일일히 지정하지 않아도 되는 유연함을 갖는다. 

let a = "hello"

 

또 변수의 타입이 하나로만 고정되지 않기에 아무 타입의 값이나 자유롭게 담을 수 있다.

let a = "hello" // 문자열
a = 19923455 // 숫자

 

마지막 라인에 toUpperCase( ) 라는 메서드를 사용하면 어떻게 되는가 오류가 발생한다.

toUpperCase 는 문자열에만 사용할 수 있는 메서드인데 변수 a 에는 숫자가 들어있기 때문이다.그래도 실행은 된다.

하지만 애초에 오류가 발생할 코드였다면 실행 전에 검사를 통해 실행되지 않게 막는 것이 좋다.

 

위와 같은 코드는 간단해서 실행하자 마자 어떤 오류인지 파악할 수 있지만 코드가 복잡해지고 양이 많아지면 저러한 오류들이 생기고 하루나 이틀 뒤에 오류가 발생할 수 있어 예상치 못한 상황을 맞이하거나 서버가 터질 수도 있다.

 

그에 비해 정적 타입 시스템은 코드 실행 이전 모든 변수의 타입을 고정적으로 결정한다.

( 엄격하고 고정적인 시스템 예 : C, Java )

동적 타입 시스템과는 다르게 위와 같은 문제들이 잘 발생하지 않는다.

 

동적 타입 시스템과 달리 코드 실행전 검사하고 오류가 있음을 알려준다.

 

하지만 단점으로는 모든 변수에 타입을 전부 지정해줘야한다. ( 타이핑 양이 많아진다 )

 

타입스크립트는 독특한 타입 시스템을 사용하는데 동적과 정적 타입 시스템을 혼합한 것 같은 시스템을 사용한다.

변수의 타입을 실행 전에 결정하고 타입 오류를 실행 전 검사해서 자바처럼 미리 알려준다. ( 오류 발생을 막는다 )

 

변수 a 를 number 타입으로 정의했기 때문에

문자열에 사용하는 toUpperCase( ) 같은 메서드를 사용하려하면 오류를 띄워서 알려준다.

정적 타입 시스템처럼 안전하면서도 마치 동적 타입 시스템처럼 모든 변수에 일일히 타입을 정의하지 않아도 된다.

변수 a 에 담긴 숫자 값 1 로 초기화 된 것을 타입스크립트가 보고 스스로 추론한다.

 

타입스크립트의 이런 독특한 타입 시스템은

동적인 타입 시스템의 안전하지 않은 문제를 해결하고 정적인 타입 시스템의 귀찮음을 동시에 해결한다.

이러한 타입 시스템을 점진적으로 타입을 결정한다 해서 점진적 타입 시스템 ( Gradual Type System ) 이라 부른다.

 

'TypeScript' 카테고리의 다른 글

TypeScript ) 인터페이스  (0) 2024.02.22
TypeScript ) 타입스크립트의 타입들  (0) 2024.02.22
TypeScript ) 컴파일러 옵션  (0) 2024.02.22
TypeScript ) 타입스크립트란 ?  (0) 2024.02.22