Property 'map' does not exist on type in TypeScript

cochae·2022년 10월 27일
0

error

목록 보기
3/5

import { db } from "../models/db";
import { Service } from "../types/services";

export const getServiceItems = async () => {
  return db.data?.Services;
};

export const runServiceItems = async (apitoken: string) => {
  let servicesItems = getServiceItems();

  if (typeof servicesItems !== undefined) {
    servicesItems.map((servicesItem: Service) => {
      console.log(servicesItem);
    });
  }
};

코드를 설명하면, db에서 Services라는 배열을 가져와서 map으로 각 요소를 실행하려고 했다.
그런데 map이라는 type이 없다는 오류가 떴고,
처음에는 타입을 잘못 썼나 했는데 비동기 처리를 잘못한 문제였다.
getServiceItem를 호출하고 데이터를 불러오기 전에 map 메서드를 돌리기 때문에 ‘undefined’ 에러 발생했다.

export const runServiceItems = async (apitoken: string) => {
  let servicesItems = await getServiceItems(); //await 추가

  servicesItems && //undefined가 아닌 경우 map 메소드 실행하도록 &&구문 추가
    servicesItems.map((servicesItem: Service) => {
      console.log(servicesItem);
    });
};

비동기 처리를 위해 runServiceItems 함수를 수정했다.
👉 getServiceItem를 끝낸 후에 map이 실행하도록 await과 && 추가했다.

map 메소드를 사용하는 배열 안에 데이터가 있는지 확인

0개의 댓글