똑같은 삽질은 2번 하지 말자
[vue-decorator-property] @Prop의 ?: 와 !: 의미 feat. typescript) 본문
개요
밑의 코드처럼 prop의 타입으로써 ! ? 붙이는 차이는 무엇?
@Prop({ default: [] }) prop1!: xxx[]
@Prop() prop2?: xxx[]
decorator에서 정의된 멤버 변수에 붙어있는 ! 는 Non Null Assertion 오퍼레이터로 불리며,
!이 붙은 속성이 Null/Undefined 가 아님을 뜻한다
단, 는 required: true 또는 기본값이 설정되어 있는 속성에만 지정할 것을 권장
반대로 필수 항목이 아닌 기본값도 지정되어 있지 않다면 ?을 지정하는 것이 좋습니다.
? 의 의미는 undefined의 가능성이 있다는 말이다.
최근에 개발환경에서는 문제없이 잘 돌아갔지만, build를 할때 타입에러가 나서 문제가 된적이 있다.
ERROR in /var/www/html/src/components/xxxxx.vue
ERROR in /var/www/html/src/components/xxxxx.vue(xx,xx):
68:16 Type 'xxx[] | undefined' must have a '[Symbol.iterator]()' method that returns an iterator.
66 | })
67 |
> 68 | return [...prop2, ...prop1]
| ^
69 | }
70 |
FATAL Nuxt Build Error
spread Operator는 해당 대상이 iterable하지 않으면 쓸 수 없는데 prop를 ?을 붙여나서 undefined 일지도 모른다는 이상한 설정으로
빌드에러가 난적이 있어서 기록해둔다.
'Vue' 카테고리의 다른 글
Nuxt(SPA) + Firebase 에서 Google Tag Manager를 이용해 page_view 이벤트를 커스텀해보기 (0) | 2022.04.09 |
---|---|
Can I use ... Vue 3? (컨퍼런스 발표 내용) (3) | 2022.02.05 |
Nuxt에서 Global로 scss의 변수($)나 @mixin을 설정하기 (0) | 2022.01.23 |
Nuxt에서 @nuxjs/dotenv 없이 .env 파일 환경변수 셋팅하기 (0) | 2022.01.09 |
Nuxt console.log에 찍히는 Nuxt SSR의 의미 (1) | 2021.12.12 |
Comments