나의보물들/TypeScript

[TypeScript] The left-hand side of an assignment expression may not be an optional property access 에러 해결

솔솔하네 2024. 1. 30. 11:23

[에러가 나왔던 상황]

vue3 + typeScript에서

<video>태그에 ref로 속성에 접근해서 (ref = "video")

    const onClickVideoPopupClose = () => {
      video.value?.currentTime = 0;
    };

위와 같은 코드로 비디오 화면을 닫으면 재생 시점을 맨처음으로 돌아갈 수 있게 코드를 작성했는데

위와 같은 에러가 발생함.

 

 

[에러가 나온 원인]

video.value? 로 나올 수 있는 값이 video 속성값 또는 video 속성 값이 없으면 에러가 발생하지않고 undefinde가 출력 되기 때문에 결국 ' undefined = 0 ' 이렇게 할당하고 있는 꼴이 되기 때문에 에러가 발생

블로그 참고 : https://yoo11052.tistory.com/168

 

[JavaScript] 옵셔널 체이닝

옵셔널 체이닝(Optional Chaining) 자바스크립트에서 존재하지 않는 요소에 접근하려 할 때 에러가 발생할 수 있습니다. 그래서 옵셔널 체이닝이 등장하기 전에는 AND 연산자의 단축평가를 이용해 이

yoo11052.tistory.com

 


[해결방법]

    const onClickVideoPopupClose = () => {
      if (video.value?.currentTime) {
        video.value.currentTime = 0;
      }
    };

 

조건문으로 video.vaule?.currentTime에 값이 있으면  video.vaule.currentTime에 값을 할당 하게 변경하여 해결하였습니다.