IT기술· 5분 읽기
🔧
TypeScript 5.5 satisfies 연산자 완벽 가이드 — 타입 안전성 극대화 실전 팁
TypeScript satisfies 연산자 2026 실전 활용 가이드. as 대체, 리터럴 타입 유지, const assertion 조합까지 코드 예시로 정리.
TypeScript 5.5 satisfies 연산자 완벽 가이드 — 타입 안전성 극대화 실전 팁
satisfies 연산자는 TypeScript 4.9에서 도입되어 5.x에서 안정화된 핵심 타입 도구입니다. as의 위험성 없이 타입 안전성을 보장하면서 리터럴 정보를 유지하는 것이 핵심.
as와 satisfies 차이
ts
// as — 강제 캐스팅, 타입 오류 숨김 위험
const colors = { red: "#ff0000", blue: "#0000ff" } as Record<string, string>
// satisfies — 제약 검증만, 실제 타입은 좁게 유지
const colors = { red: "#ff0000", blue: "#0000ff" } satisfies Record<string, string>
// colors.red → "#ff0000" 리터럴 유지as는 "이 타입이라고 믿어"라서 잘못 쓰면 런타임 버그. satisfies는 "이 타입 조건 만족하는지 체크만"이라 원래 좁은 타입이 유지됩니다.
실전 활용 1: 라우트 설정
ts
type RouteHandler = (req: Request) => Response
const routes = {
"/": (req) => new Response("Home"),
"/api": (req) => new Response("API"),
} satisfies Record<string, RouteHandler>
// routes["/"] 타입이 구체적으로 유지됨실전 활용 2: 환경 변수 검증
ts
const env = {
PORT: Number(process.env.PORT),
NODE_ENV: process.env.NODE_ENV,
DB_URL: process.env.DB_URL,
} satisfies { PORT: number; NODE_ENV: string; DB_URL: string }누락된 필드 즉시 컴파일 오류. as와 달리 잘못된 값 넣으면 막아줌.
실전 활용 3: Tailwind/CSS 매핑
ts
const variants = {
primary: "bg-blue-500 text-white",
danger: "bg-red-500 text-white",
success: "bg-green-500 text-white",
} satisfies Record<string, string>
type Variant = keyof typeof variants // "primary" | "danger" | "success"const assertion 조합
ts
const config = {
maxRetries: 3,
timeout: 5000,
endpoints: ["api1", "api2"],
} as const satisfies { maxRetries: number; timeout: number; endpoints: readonly string[] }as const + satisfies 조합이 가장 엄격한 타입 정의. 설정 객체 필수 패턴.
피해야 할 패턴
- 1satisfies 남발: 타입 추론이 이미 정확한 곳에 추가하면 노이즈
- 2
as대신 무조건 satisfies: 외부 라이브러리 타입 정의 회피용엔 여전히as필요 - 3런타임 검증 대체: satisfies는 컴파일 타임. 외부 입력은 zod 같은 런타임 스키마로 검증 별도 필요
마무리
TypeScript 5.x 이후 as 사용량을 줄이고 satisfies로 점진 교체하는 것이 권장 패턴. 타입 추론 품질 유지 + 컴파일 타임 안전성 극대화라는 두 토끼를 잡는 2026년 필수 도구입니다.
🔧 이 글과 관련된 무료 도구
이 글과 관련된 상품 (TypeScript)[광고/제휴]
이 포스팅은 쿠팡 파트너스, 아마존 어소시에이트, 알리익스프레스 제휴 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다. 이는 상품 가격에 영향을 주지 않습니다.
As an Amazon Associate, Coupang Partner, and AliExpress affiliate, I earn from qualifying purchases at no extra cost to you.