# 💎 [LEVEL 13] 타입스크립트: 흔들리지 않는 코드의 뼈대

## 1. 인터페이스(Interface)와 타입(Type)
- "이 데이터는 어떻게 생겼어?"를 미리 정의하라. 
- 오타 때문에 발생하는 멍청한 버그의 90%를 막아준다.
- **원칙**: `any`를 쓰는 것은 코딩을 포기하는 것이다. 죽어도 `any`는 쓰지 마라.

## 2. 제네릭(Generic): 유연하면서도 안전하게
- 어떤 타입이 들어올지 모르지만, 들어온 타입 그대로 내뱉고 싶을 때 사용하라.
- 재사용 가능한 컴포넌트(`Button<T>`, `Select<T>`)를 만들 때 중급자의 실력이 여기서 드러난다.

## 3. 타입 추론과 좁히기(Narrowing)
- 리액트가 타입을 똑똑하게 유추하게 도와줘라. 
- `if (user)` 처럼 타입을 좁혀서 `undefined` 에러를 원천 차단하라.
