tech.junha.kr

[Typescript] 추가 제공 타입 (tuple, enum, any, void, never)

TypeScript 에서는 기본형 자료형, 참조형 자료형외에도 추가로 타입을 제공한다.

1. tuple

길이와 각 요소의 타입이 정해진 배열을 저장하는 타입

let arr:[string, number] = ["Hi",6];

arr[1].concat("!");
//Error, 'number'does not have'concat’

//정의하지않은 index 호출 시 오류
arr[3]="hello";
//Error, Property '3'does not exist on type'[string,number]

2. enum

  • 특정 값들의 집합을 저장하는 타입
  • enumerable, 즉 열거 가능한 데이터 타입을 말한다.
  • 데이터에 순서가 있는데, 그 순서에 맞게 값을 주고 싶을 때 사용한다.
  • 순서는 상수로 매기며, 1씩 증가하는 꼴이다.

특정 값(상수)들의 집합을 저장하는 타입, 연관된 아이템들을 함께 묶어서 표현할 수 있는 수단이다.

enum CardinalDirection {
  North = 1,
  East,  // 2 1씩 추가된다.
  South, // 3
  West,
};
const UserDirection: CardinalDirection = {
  North: CardinalDirection.North,
  East: CardinalDirection.East,
  South: CardinalDirection.South,
  West: CardinalDirection.West,
};

3. any

모든 타입을 저장할 수 있다. 컴파일 중 타입 검사를 하지 않는다.

하지만 any를 남발하면 Typescirpt를 쓰는 이유가 없기 때문에, 제한적으로 사용한다.

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

4. void

보통 함수에서 반환 값이 없을 때, any의 반대 타입

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

let unknown: void = undefined;

function sayHi(): void {
	console.log("hi");
}

5. never

발생할 수 없는 타입

// 항상 오류를 발생시키거나 절대 반환하지 않는 반환 타입
// 종료되지 않는 함수
function neverEnd(): never {
while (true) {}
}
// Error: A function returning 'never' cannot
have a reachable end point.ts(2534)
function neverEnd(): never {
while (true) {
break;
}
}

// 항상 오류를 발생시키는 함수
function error(message: string): never {
throw Error(message)
}