여러 데이터를 묶어서 관리하는 자료구조들의 타입 정의 방법입니다.
타입스크립트에서만 존재하는 4가지 특수 목적의 타입입니다. any는 마치 바이러스 같아서 프로젝트 전체의 타입 안전성을 파괴하므로 극도로 피해야 하며, 불가피할 경우 unknown을 사용하는 습관을 들여야 합니다.
기존에 존재하는 타입들을 조합하여 더 복잡하고 정교한 새로운 타입을 만들어내는 연산자들입니다.
타입의 범위를 string이나 number처럼 넓게 잡지 않고, 특정 문자열이나 숫자 자체를 타입으로 박아버리는 기능입니다. 자동 완성 기능을 극대화하고 오타로 인한 버그를 완벽하게 막아줍니다.
// 단순히 문자열(string)이라고 퉁치는 것이 아니라,
// 오직 "success", "error", "loading" 3개의 단어만 들어오도록 제한!
type Status = "success" | "error" | "loading";
let currentStatus: Status = "loading"; // 통과
// currentStatus = "finish"; // ❌ 에러! "finish"는 허락된 단어가 아님!