TypeScript타입
TS2339 Property does not exist on type — 없는 속성 접근
TS2339: Property '<prop>' does not exist on type '<type>'
한 줄 해결: 타입에 정의되지 않은 속성에 접근해 발생하며, 타입 정의를 보강하거나 타입을 좁히는 것이 정석입니다.
이런 증상일 때
객체.속성 접근 지점에 TS2339가 뜹니다. API 응답·이벤트 객체·확장한 window 등에서 자주 납니다.
원인
- 타입(또는 interface)에 그 속성이 선언되지 않음
- 유니온 타입이라 일부 멤버에만 있는 속성을 좁히지 않고 접근
- window·globalThis에 커스텀 속성을 추가했는데 타입 선언이 없음
해결 방법
1
타입/인터페이스에 속성 추가
실제 존재하는 속성이면 타입 정의에 추가합니다.
interface User { name: string; age?: number }2
유니온은 좁히기
in 연산자나 판별 속성(discriminant)으로 타입을 좁힌 뒤 접근합니다.
if ('age' in user) { /* user.age 안전 */ }3
전역 확장 선언
window 등 전역에 추가한 속성은 declare global로 선언합니다.
declare global { interface Window { myFlag?: boolean } }💡 예방: any 캐스팅으로 덮지 말고 타입을 정확히 정의하세요. API 응답은 zod 등으로 런타임 검증 + 타입 추론을 함께 쓰면 안전합니다.
TypeScriptTS2339타입interface속성