2장 타입 시스템
2.1 타입의 종류
타입: 자바스크립트에서 다루는 값의 형태에 대한 설명
형태: 값에 존재 하는 속성과 메서드, 내장되어 있는 typeof
연산자가 설명하는 것
타입스크립트의 가장 기본적인 타입은 자바스크립트의 일곱 가지 원시 타입과 같다.
- null
- undefined
- boolean
- string
- number
- bigint
- symbol
Boolean과 Number와 같은 객체는 각 원싯값을 감싸는 객체이다. 타입스크립트에서는 일반적으로 boolean과 number처럼 소문자로 참조하는 것이 모범 사례이다.
2.1.1 타입 시스템
타입 시스템: 프로그래밍 언어가 프로그램에서 가질 수 있는 타입을 이해하는 방법에 대한 규칙 집합
타입 시스템의 작동 방식
- 코드를 읽고 존재하는 모든 타입과 값을 이해한다.
- 각 값이 초기 선언에서 가질 수 있는 타입을 확인한다.
- 각 값이 추후 코드에서 어떻게 사용될 수 있는지 모든 방법을 확인한다.
- 값의 사용법이 타입과 일치하지 않으면 사용자에게 오류를 표시한다.
2.1.2 오류 종류
타입스크립트를 작성하는 동안 가장 자주 접하게 될 오류 두 가지는 다음과 같다.
- 구문 오류: 타입스크립트가 자바스크립트로 변환되는 것을 차단한 경우
- 타입 오류: 타입 검사기에 따라 일치하지 않는 것이 감지된 경우
구문 오류
- 타입스크립트가 코드로 이해할 수 없는 잘못된 구문을 감지할 때 발생한다.
- 타입스크립트가 타입스크립트 파일에서 자바스크립트 파일을 올바르게 생성할 수 없도록 차단한다.
타입 오류
- 타입 오류는 타입스크립트의 타입 검사기가 프로그램의 타입에서 오류를 감지했을 때 발생한다.
- 코드가 실행되면 무언가 충돌하거나 예기치 않게 작동할 수 있음을 나타낸다.
2.2 할당 가능성
할당 가능성: 타입스크립트에서 함수 호출이나 변수에 값을 제공할 수 있는지 여부를 확인하는 것
let lastName = 'King';
lastName = true; // ERROR
2.2.1 할당 가능성 오류 이해하기
할당 가능성 오류는 타입스크립트 코드를 작성할 때 만나게 되는 가장 일반적인 오류 중 하나이다.
2.3 타입 애너테이션
변수에 초깃값이 없으면 기본적으로 변수를 암묵적인 any 타입으로 간주한다.
진화하는 any: 초기 타입을 유추할 수 없는 변수
타입 애너테이션: 초깃값을 할당하지 않고도 변수의 타입을 선언할 수 있는 구문
변수에 타입 애너테이션으로 정의한 타입 외의 값을 할당하면 타입 오류가 발생한다.
let rocker;
rocker = 'Joan Jett';
rocker.toUpperCase(); // OK
rocker = 19.58;
rocker.toPrecision(1); // OK
rocker.toUpperCase(); // ERROR
2.3.1 불필요한 타입 애너테이션
다음 코드에서 string 타입 애너테이션은 중복이다. 타입스크립트가 이미 firstName
이 string 타입임을 유추할 수 있기 때문이다.
let firstName: string = 'Tina';
2.4 타입 형태
2.4.1 모듈
타입스크립트는 최신 모듈 파일을 기존 파일과 함께 실행할 수 있다. 모듈 파일에 선언된 모든 것은 해당 파일에서 명시한 export
문에서 내보내지 않는 한 모듈 파일에서만 사용할 수 있다.
파일이 스크립트면 타입스크립트는 해당 파일을 전역 스코프로 간주하므로 모든 스크립트가 파일의 내용에 접근할 수 있다. 즉, 스크립트 파일에 선언된 변수는 다른 스크립트 파일에 선언된 변수와 동일한 이름을 가질 수 없다.
타입스크립트는 CommonJS와 같은 이전 모듈을 사용해서 작성된 타입스크립트 파일의 import
, export
형태는 인식하지 못한다. 타입스크립트는 일반적으로 CommonJS 스타일의 require
함수에서 반환된 값을 any 타입으로 인식한다.
2.5 마치며
타입스크립트의 타입 시스템이 어떻게 작동하는지 살펴봤다.