[Typescript] const로 객체 선언 vs const로 타입 단언

Narcoker·2025년 5월 19일

Typescript

목록 보기
11/15

요약

  • 객체 선언
    • const obj = { a: 1, b: 2 }
    • 변수 obj를 재할당할 수 없음
    • 객체 속성은 변경 가능
  • 타입 단언(as const)
    • const obj = { a: 1, b: 2 } as const
    • 객체 전체를 읽기 전용(readonly) + 리터럴 타입으로 고정
    • 객체 속성도 변경 불가
    • let, var로 객체를 선언한 경우 객체 재할당 가능

const 로 객체 선언

const obj = { a: 1, b: 2 };

// 가능함!
obj.a = 3;

obj라는 변수 자체는 재할당할 수 없지만, 내부 속성은 변경 가능

타입스크립트는 obj를 { a: number; b: number }로 추론

const 로 타입 단언

const obj = { a: 1, b: 2 } as const;

// 에러! 읽기 전용 속성은 수정할 수 없음
obj.a = 3;  // ❌ 에러 발생!

타입스크립트는 obj를 { readonly a: 1; readonly b: 2 }로 추론

즉, 값과 타입 둘 다 고정됨.

💡언제 as const를 쓰는 게 좋을까?

API 응답 등에서 불변 객체를 다룰 때

속성을 실수로 바꾸지 못하도록 막기 위해

리터럴 값으로 타입을 좁히고 싶을 때

"GET", "POST" 같은 문자열 리터럴을 유지하고 싶을 때

유니온 타입 추론을 명확히 하고 싶을 때

[1, 2, 3] as const → readonly [1, 2, 3]

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글