Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 연결 리스트
- APOLLO
- 스택
- 큐
- 브라우저
- 프로세스
- 알고리즘
- C
- 코딩테스트
- 배열
- 컨테이너
- 웹팩
- Machine Learning
- 릿코드
- cors
- 포인터
- 이진탐색
- 연결리스트
- 프론트엔드
- 해시테이블
- vue3
- 프로그래머스
- RxJS
- alexnet
- RT scheduling
- pytorch
- GraphQL
- 타입스크립트
- 자바스크립트
- 자료구조
Archives
- Today
- Total
프린세스 다이어리
[Vue3] property 'reduce' does not exist on type ~ 해결방법 본문
728x90
문제상황
fetch 받아온 배열을 reduce 돌고 싶은데, reduce에 밑줄이 생기며 에러가 뜬다. reduce 뿐만 아니라 this.charData[0]와 같이 인덱스에 접근하는 곳에도 모두 타입에러가 떴다. 아마 map을 돌았어도 에러가 떴을 것이다.
computed: {
isChartDataEmpty(): boolean {
return (
this.chartData.reduce((acc: number, cur: any) => acc + cur.y, 0) === 0
);
},
},
Property 'reduce' does not exist on type '(state: DashboardStateI) => ChartDataI[] | undefined'.
해결방안
chartData가 undefined일 경우도 있기 때문에 발생하는 타입에러다. 따라서 해당 컴포넌트가 렌더링되는 조건을 부모 컴포넌트에 v-if 으로 정해주고, setup에서 chartData가 undefined일 경우 빈 array가 되도록 만들어준다.
수정 전
// SampleChart.vue
setup() {
const chartData = computed(
() => store.getters['dashboardStore/chartData']
) as unknown as ChartDataType;
...
수정 후
<!-- Dashboard.vue -->
<div>
<SampleChart v-if="chartData" />
</div>
// SampleChart.vue
setup() {
const chartData =
computed(
(): ChartItemI[] =>
store.getters['dashboardStore/chartData']
) ?? [];
...
결과
클린하게 해결 완.
참고문서: 타입스크립트 공홈 https://www.typescriptlang.org/ko/docs/handbook/2/everyday-types.html
728x90
'FE' 카테고리의 다른 글
자바스크립트 전화번호/휴대폰번호 정규표현식, 의미 설명 (0) | 2022.01.24 |
---|---|
[Vue3] [Vue warn]: Invalid vnode type when creating vnode 해결방법 (0) | 2022.01.05 |
[Vue3 / Highcharts] Property does not exist on type 'never'. 해결 방법 (0) | 2022.01.04 |
xCode 로그 찍고 확인하는 법 (0) | 2021.12.13 |
자바스크립트 숫자 타입 정리 (0) | 2021.12.04 |
Comments