Contents

typescript Refs_error

vue typescript_$refs error

  1. Object is possibly ‘undefined’

  2. Property ‘value’ does not exist on type ‘Vue | Element | (Vue | Element)[]’.
    Property ‘value’ does not exist on type ‘Vue’

typescript를 적용한 vue에서 $refs 값을 가져와 사용하는데 위와 같은 문제가 발생했습니다.

에러가 나오는 이유

개발자가 보기에는 너무 당연히 데이터가 있지만, 객체가 비어 있을 수도 있는데 해당 객체의 내부 메소드를 사용하거나 내부 객체 키에 값을 넣어주려고 할 때 발생합니다.

1
2
const refs = this.$refs.image		//👈 여기서 에러 발생
const name = refs.value.name

옵셔널체이닝, if문으로 undefined 거르기 등을 시도해 보았지만, 오류가 계속 되었고 타입 단언 사용으로 해결하였습니다.

1
2
3
// eslint-disable-next-line
const refs = this.$refs.image as any	//👈
const name = refs.value.name

any 타입으로 지정해주며 깔끔히 무시해버리기.

관련해 자료를 찾아보니 별로 권장되는 방법은 아닌 것 같습니다. 다만, 저는 옵셔널 체이닝과 if문으로 걸리지지 않았기 때문에 적용해 보았고 해결이 되어 그냥 진행하기로 하였습니다.

🤔선택적으로 적용해보세요. 아마, 옵셔널체이닝이 가장 권장되는 방법이 아닐까 예측해봅니다.