본문으로 건너뛰기

2장 타입 시스템

2.1 타입의 종류​

타입: 자바스크립트에서 다루는 값의 형태에 대한 설명

형태: 값에 존재하는 속성과 메서드, 내장되어 있는 typeof 연산자가 설명하는 것

타입스크립트의 가장 기본적인 타입은 자바스크립트의 일곱 가지 원시 타입과 같다.

  • null
  • undefined
  • boolean
  • string
  • number
  • bigint
  • symbol

Boolean과 Number와 같은 객체는 각 원싯값을 감싸는 객체이다. 타입스크립트에서는 일반적으로 boolean과 number처럼 소문자로 참조하는 것이 모범 사례이다.

2.1.1 타입 시스템​

타입 시스템: 프로그래밍 언어가 프로그램에서 가질 수 있는 타입을 이해하는 방법에 대한 규칙 집합

타입 시스템의 작동 방식

  1. 코드를 읽고 존재하는 모든 타입과 값을 이해한다.
  2. 각 값이 초기 선언에서 가질 수 있는 타입을 확인한다.
  3. 각 값이 추후 코드에서 어떻게 사용될 수 있는지 모든 방법을 확인한다.
  4. 값의 사용법이 타입과 일치하지 않으면 사용자에게 오류를 표시한다.

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 마치며​

타입스크립트의 타입 시스템이 어떻게 작동하는지 살펴봤다.