const 단언 및 as const
as const로 리터럴 및 튜플 형식을 정확하게 추론합니다.
const 단언 및 as const은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
as const란 무엇입니까?
as const는 TypeScript에 표현식에서 가능한 가장 구체적인 리터럴 타입을 추론하고 모든 프로퍼티를 readonly로 만들도록 지시하는 타입 어설션입니다.
const colors = ["red", "green", "blue"] as const;
// type: readonly ["red", "green", "blue"]as const로 확장 방지
as const가 없으면 배열과 객체의 문자열 값이 string으로 확장됩니다. 사용하면 리터럴 타입으로 유지됩니다.
const dir1 = { direction: "left" };
// dir1.direction: string
const dir2 = { direction: "left" } as const;
// dir2.direction: "left"객체 리터럴의 as const
as const를 사용한 객체의 모든 프로퍼티는 readonly가 되고 재귀적으로 리터럴 타입을 유지합니다.
const theme = {
color: "dark",
sizes: { sm: 8, md: 16 },
} as const;
// theme.color: "dark", theme.sizes.sm: 8 (all readonly)튜플 타입을 위한 as const
as const를 사용한 배열은 리터럴 요소 타입을 가진 readonly 튜플이 되므로 고정된 인수 목록을 정의하는 데 유용합니다.
const args = [1, "hello", true] as const;
// type: readonly [1, "hello", true]as const에서 유니온 타입 도출
일반적인 패턴은 as const 값 배열을 정의한 다음 typeof와 인덱스 접근을 사용하여 그 배열에서 유니온 타입을 도출하는 것입니다.
const STATUSES = ["pending", "active", "done"] as const;
type Status = typeof STATUSES[number];
// type Status = "pending" | "active" | "done"함수 인수의 as const
함수를 호출할 때 as const를 인라인으로 사용하여 호출 경계를 넘어 리터럴 타입을 유지할 수 있습니다.
function setMode(mode: "dark" | "light") {}
setMode("dark" as const); // safe, preserves literalReadonly 재귀
as const는 Readonly를 재귀적으로 적용합니다. 중첩된 객체와 배열도 모두 readonly가 되어 깊은 수준의 변경을 방지합니다.
const config = { db: { host: "localhost", port: 5432 } } as const;
// config.db.port = 5433; // Error: readonlyas const와 Object.freeze
as const는 컴파일 시점 어설션이므로 런타임 보호 기능이 없습니다. Object.freeze는 런타임에서 작동합니다. 두 기능은 서로 보완적인 역할을 합니다.
const obj = Object.freeze({ x: 1 }); // runtime immutability
const obj2 = { x: 1 } as const; // compile-time literal types상수 단언과 타입 주석 비교
타입 주석은 타입의 범위를 넓힙니다. const x: string = "hi"의 타입은 string이 됩니다. 반면 as const는 범위를 좁힙니다. const x = "hi" as const의 타입은 "hi"가 됩니다.
const a: string = "hi"; // type: string
const b = "hi" as const; // type: "hi"실용적인 사용법: 열거형과 유사한 객체
많은 코드베이스에서는 열거형의 대안으로 as const 객체를 사용합니다. 이렇게 하면 열거형의 문제를 피하면서도 타입 안전성을 유지할 수 있습니다.
const Direction = { Up: "UP", Down: "DOWN" } as const;
type Direction = typeof Direction[keyof typeof Direction];
// "UP" | "DOWN"복습: 상수 단언
as const는 TypeScript가 리터럴 타입을 추론하고 모든 속성을 읽기 전용으로 취급하게 합니다. 배열에서 정확한 유니언 타입을 추출하고 안전한 구성 객체를 만드는 데 필수적입니다.
빠른 확인
배열에 as const를 사용하면 어떻게 되나요?
배운 내용
as const는 리터럴 타입을 고정하고, 읽기 전용 구조를 만들며, 배열에서 정확한 유니언 타입을 추출하는 강력한 도구입니다. 고급 TypeScript 패턴의 핵심 요소입니다.
자주 묻는 질문
“const 단언 및 as const” 강의는 무료인가요?
네 — “const 단언 및 as const” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“const 단언 및 as const”에서 뭘 배우나요?
as const로 리터럴 및 튜플 형식을 정확하게 추론합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“const 단언 및 as const” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 형식 확장 및 축소의 작동 원리
- 문맥적 형식 지정: 문맥에서 추론하기
- 신선도 및 초과 속성 검사
- const 단언 및 as const