하다보니 너무 까먹어서 들고왔다

기본 타입 | 타입스크립트 핸드북 (joshua1988.github.io)

null / undefined 타입 - TypeScript Guidebook (gitbook.io)

타입스크립트 기본 타입

타입스크립트로 변수나 함수와 같은 자바스크립트 코드에 타입을 정의할 수 있습니다.
타입스크립트의 기본 타입에는 크게 다음 12가지가 있습니다.

  • Boolean

타입이 진위 값인 경우에는 아래와 같이 선언합니다.

let isLoggedIn: boolean = false;
  • Number

타입이 숫자이면 아래와 같이 선언합니다.

let num: number = 10;
  • String

자바스크립트 변수의 타입이 문자열인 경우 아래와 같이 선언해서 사용합니다.

let str: string = 'hi';

위와 같이 :를 이용하여 자바스크립트 코드에 타입을 정의하는 방식을 타입 표기(Type Annotation)라고 합니다

  • Object

[TypeScript]객체(Object) 타입 정의 (tistory.com)

 

[TypeScript]객체(Object) 타입 정의

타입스크립트(TypeScript)는 자바스크립트(JavaScript)에 비해 타입을 엄격하게 처리하므로 변수 또는 객체를 선언할 때, 타입을 정의해야 합니다. 객체의 타입을 정의하는 방법은 interface와 type이 존

developer-talk.tistory.com

 

타입스크립트(TypeScript)는 자바스크립트(JavaScript)에 비해 타입을 엄격하게 처리하므로 변수 또는 객체를 선언할 때, 타입을 정의해야 합니다.

 

객체의 타입을 정의하는 방법은 interface type이 존재하는데, 대부분의 TypeScript 개발자들은 확장성이 좋은 interface 사용을 권장합니다.

 

하지만, 타입이 심플하거나 절대 변경되지 않는 경우에는 type을 사용하여 객체의 타입을 정의하기도 합니다.

 

object는 interface, class의 상위 타입입니다. Java에서 최상위 클래스가 Object 클래스인 것처럼 JavaScript에서 최상위 객체는 object입니다.

let obj: object = { name: 'NAME', age: 29 };

obj = { A: 'A', B: 'B' };

타입을 object로 정의하면, any 타입처럼 모든 타입의 값을 할당할 수 있습니다.

객체를 object 타입으로 정의하는 경우 타입 검사에 엄격한 TypeScript를 사용한 목적이 애매모호해집니다.

 

 

  • Array

타입이 배열인 경우 간단하게 아래와 같이 선언합니다.

let arr: number[] = [1,2,3];

또는 아래와 같이 제네릭을 사용할 수 있습니다.

let arr: Array<number> = [1,2,3];
  • Tuple

튜플은 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열 형식을 의미합니다.

 

let arr: [string, number] = ['hi', 10];

만약 정의하지 않은 타입, 인덱스로 접근할 경우 오류가 납니다.

arr[1].concat('!'); // Error, 'number' does not have 'concat'
arr[5] = 'hello'; // Error, Property '5' does not exist on type '[string, number]'.
 
  • Enum

이넘은 C, Java와 같은 다른 언어에서 흔하게 쓰이는 타입으로 특정 값(상수)들의 집합을 의미합니다.

enum Avengers { Capt, IronMan, Thor }
let hero: Avengers = Avengers.Capt;

이넘은 인덱스 번호로도 접근할 수 있습니다.

enum Avengers { Capt, IronMan, Thor }
let hero: Avengers = Avengers[0];

만약 원한다면 이넘의 인덱스를 사용자 편의로 변경하여 사용할 수도 있습니다.

enum Avengers { Capt = 2, IronMan, Thor }
let hero: Avengers = Avengers[2]; // Capt
let hero: Avengers = Avengers[4]; // Thor

 

  • Any

기존에 자바스크립트로 구현되어 있는 웹 서비스 코드에 타입스크립트를 점진적으로 적용할 때 활용하면 좋은 타입입니다. 단어 의미 그대로 모든 타입에 대해서 허용한다는 의미를 갖고 있습니다.

 

let str: any = 'hi';
let num: any = 10;
let arr: any = ['a', 2, true];
  • Void

변수에는 undefined와 null만 할당하고, 함수에는 반환 값을 설정할 수 없는 타입입니다.

let unuseful: void = undefined;
function notuse(): void {
  console.log('sth');
}
  • Null & Undefined

null / 정의되지 않음 타입 - 타입스크립트 가이드북 (gitbook.io)

 

 

null / undefined 타입 - TypeScript Guidebook

만약 아래와 같이 코드를 작성했을 때 null, undefined를 항상 서브 타입(Sub Type)으로 할당 가능하게 하려면, 즉 오류를 출력하지 않으려면 tsconfig.json 설정에서 "strictNullChecks" 값을 false로 설정하면 됩

yamoo9.gitbook.io

 

JavaScript에서 null, undefined는 데이터 타입 이자 하나의 값입니다. TypeScript에서도 하나의 타입으로 처리 되며 다음과 같이 사용할 수 있습니다.

let nullable:null = null;
let undefinedable:undefined = undefined;
하지만 null로 명시적 타입이 설정된 변수에 null이 아닌 값이 할당되면 다음과 같은 오류를 출력합니다.
// [오류]
// [ts] 'undefined' 형식은 'null' 형식에 할당할 수 없습니다.
// let nullable: null
nullable = undefined;

이와 같이 엄격하게 오류를 출력하는 이유는 tsconfig.json에 다음과 같이 설정되어있기 때문입니다. 설정 값을 false로 설정할 경우 위와 같은 오류가 발생하지 않습니다.

strictNullChecks": true, /* 엄격한 null 검사 사용 */

 

 

  • Never

함수의 끝에 절대 도달하지 않는다는 의미를 지닌 타입입니다.

// 이 함수는 절대 함수의 끝까지 실행되지 않는다는 의미
function neverEnd(): never {
  while (true) {

  }
}

+ Recent posts