Skip to content

feat(blog): as const와 keyof typeof로 enum 없이 안전한 상수 만들기 (#38)#128

Merged
Malloc72P merged 1 commit into
mainfrom
claude/issue-38-as-const
Jul 6, 2026
Merged

feat(blog): as const와 keyof typeof로 enum 없이 안전한 상수 만들기 (#38)#128
Malloc72P merged 1 commit into
mainfrom
claude/issue-38-as-const

Conversation

@Malloc72P

Copy link
Copy Markdown
Owner

개요

이슈 #38 을 블로그 포스트로 작성했습니다. frontend 시리즈에 추가됩니다.

  • 경로: apps/blog/src/app/(main)/posts/frontend/ts-as-const/page.mdx
  • 라우트: /posts/frontend/ts-as-const

다루는 내용

  • enum이 타입이 아니라 값이라 컴파일 후 런타임 코드(IIFE + 숫자 enum 역방향 매핑)를 남기는 점
  • 문자열 enum의 nominal 특성 — 값이 같은 평범한 문자열도 거부
  • const enum의 한계 — ambient const enum은 isolatedModules에서 TS2748로 막힘
  • as const + (typeof X)[keyof typeof X]로 값과 리터럴 유니온 타입을 함께 만드는 실전 패턴
  • satisfies로 형태 검증과 리터럴 유지를 동시에

검증

  • 본문의 모든 코드 예제를 tsc 5.5.4로 실측 검증 (에러 메시지·Object.keys 이중화·컴파일 출력)
  • pnpm --filter blog run build 성공 — /posts/frontend/ts-as-const 정적 생성 확인

관례 준수

  • 기존 포스트 관례에 맞춰 본문은 ##로 시작, frontmatter는 @libs/frontmatter 사용
  • postId(ts-as-const)와 폴더명 일치

Closes #38

- enum이 남기는 런타임 코드·역방향 매핑과 nominal 특성의 함정을 정리
- as const + (typeof X)[keyof typeof X]로 값·타입 유니온 만드는 패턴 설명
- 모든 코드 예제를 tsc 5.5로 검증(에러/컴파일 출력 실측)
@vercel

vercel Bot commented Jul 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
blog Ignored Ignored Jul 6, 2026 4:34am

@Malloc72P Malloc72P merged commit 13ef33e into main Jul 6, 2026
3 checks passed
@Malloc72P Malloc72P deleted the claude/issue-38-as-const branch July 6, 2026 07:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

as const와 keyof typeof로 enum 없이 안전한 상수·유니온 타입 만들기

1 participant