Table of contents

2.0. Introduction

이 챕터에서, 우리는 가장 흔한 타입의 값들에 대해 다뤄볼 것이다.

타입은 타입 주석뿐 아니라 더 많은 장소에서 사용할 수 있다. 우리가 타입 그 자체에 대해 배워보았듯이, 우리는 새로운 구조체를 구성할 때 이 타입들을 어디서 참조시킬 수 있는지 배울 것이다.

우리는 자바스크립트나 타입스크립트를 작성할 때 마주할 수 있는 가장 기본적이고 흔한 타입을 살펴볼 것이다. 나중에는 더욱 복잡한 타입의 코어 블럭도 살펴볼 것이다.

2.1. The primitives: string , number , and boolean

자바스크립트는 string , number 그리고 boolean 이라는 매우 자주 쓰이는 원시 타입을 가지고 있다. (이하 문자열, 숫자, 불린) 타입스크립트도 그에 상응하는 타입을 가지고 있다.

이미 예상하겠지만, 이 타입들은 자바스크립트의 typeof 연산자를 사용했을 때 나오는 이름과 같다.

2.2. Arrays

[1, 2, 3] 와 같은 배열을 사용하려면, 타입스크립트에서는 number[] 와 같은 문법을 사용할 수 있다. 또한 Array<number> 와 같이 작성할 수도 있으며, 이는 완전히 같은 의미다. 또한 우리는 T<U> 와 같은 제네릭 타입도 살펴볼 것이다.

2.3. any

타입스크립트는 any 라 불리는 특별한 타입을 가지고 있다. 이 타입은 타입을 특정하고 싶지 않음에도, 타입 체킹 오류를 발생시키고 싶지 않을 때 사용한다.

어떤 값이 any 타입일 때, 당신은 모든 프로퍼티에 접근할 수 있다. 이 타입이 적용된 값은 함수처럼 호출할 수도 있고, 어떤 타입의 값도 모두 할당할 수 있다.

-any.ts-

let obj: any = { x: 0 };
// 아래의 모든 코드 줄은 타입 체크 컴파일 에러를 발생시키지 않는다.
obj.foo();
obj();
obj.bar = 100;
obj = "hello";
const n: number = obj;

만약 타입스크립트가 추론할 수 없는 컨텍스트에서 타입을 지정하지 않으면, 컴파일러는 보통 기본적으로 any 타입을 지정한다.

당신은 보통 이를 원치 않기 때문에, noImplicitAny 를 플래그로 작성함으로써 암묵적인 any 로 인한 오류를 막는 것을 권한다.

2.4. Type Annotations on Variables

const , var , 그리고 let 과 같은 선언자로 변수를 선언할 때, 그 변수의 타입을 명시적으로 특정하기 위해 선택적으로 타입 주석을 달 수 있다. -alice-name.ts-