타입시스템이란?
언어에서 사용할 수 있는 아주 여러가지 값들을 어떤 기준으로 묶어서 타입으로 정할지 결정하고,또 코드의 타입을 언제 검사할지 그리고 어떻게 검사할지 등 우리가 프로그래밍 언어를 사용할 때 타입과 관련하여 지켜야 하는 규칙들을 모아둔 체계입니다.
이 타입시스템은 크게 두가지로 나눌 수 있는데, 첫번째는 모든 변수의 타입을 고정적으로 결정하는 정적 타입 시스템이있고,
나머지 하나는 코드를 실행하기 전에는 타입을 결정하지 않고, 코드를 실행하고 나서 그때그때 마다 유동적으로 변수의 타입을 결정하는
동적 타입 시스템이 있습니다
보통 C 나 Java 같은 엄격한 문법을 가진 언어들은 당연히 엄격한 정적 타입 시스템을 사용하고 있고,
파이썬이나 자바스크립트 같은 유연한 문법을 가진 언어들은 동적 타입 시스템을 사용합니다
하지만 이런 동적타입 시스템은 프로그램이 실행 중에, 그러니까 런타임에 오류가 발생하게 되면 아주 치명적인 문제가 될 수 있습니다
(오류가 있는 코드이지만 먼저 실행은 되는? 상황,..)
반대로 정적타입 시스템은 타입관련 오류가 있으면 에디터 상에서 애초에 오류를 바로 알려주고, 실행이 되기 전에 타입을 잘 못 쓰지는 않았는지 검사까지 모두 마치고 실행이 되기 때문에 애초에 오류가 있다면 실행이 안될겁니다
(프로그래머가 의도치 않은 실수를 하더라도 미리 확인할 수 있는 기회가 생기겠죠?)
하지만, 자바스크립트 코드에 일일이 타입을 다 정의해야 한다면 생각만 해도 끔찍하지 않나요?
그럼 굳이 자바스크립트를 쓸 이유는 없습니다
타입스크립트와 점진적 타이핑
그래서 타입스크립트는 좀 독특한 타입 시스템을 사용하는데, 마치 자바스크립트의 동적 타입 시스템과 자바의 정적 타입 시스템을 혼합한 것 같은 그런 독특한 타입 시스템을 사용합니다
자 그런데 타입스크립트는 이렇게 정적 타입 시스템 처럼 안전하면서도 마치 동적타입시스템 처럼 모든 변수에 일일이
우리가 직접 타입을 명시하지 않아도 됩니다.
다음 그림의 코드도 변수 a의 타입을 지정하지 않았다. 그렇지만 변수 a를 숫자타입으로 자동으로 인지해서 코드에 오류가 있음을 빨간줄로 알려준다
결론: 타입스크립트에서는 이렇게 변수의 타입을 우리가 직접 정의하지 않아도 변수에 담기는 초기값을 기준으로 자동으로 타입을 알아서 추론합니다!
점진적 타입 시스템으로, 즉 타입이 정의된 변수들에 대해서는 타입을 미리 결정하고, 아직 타입이 정의되지 않은 변수들에 대해서는 자동으로 타입을 추론하는 거죠
'typescript' 카테고리의 다른 글
속성이 다른 데이터들을 같은 구성으로 렌더링하기 (4) | 2023.07.23 |
---|---|
함수와 타입 (2) | 2023.06.01 |
타입스크립트 이해하기 (0) | 2023.05.31 |
타입스크립트 기본2 (타입별칭, 인덱스 시그니처, Enum, Any, Unknown, Void, Never 타입) (0) | 2023.05.31 |
타입스크립트 기본(원시타입, 비원시타입, 리터럴 타입) (0) | 2023.05.31 |