강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của devjihye
devjihye

câu hỏi đã được viết

NestJS phụ trợ vững chắc, từ cơ bản đến nâng cao

Dữ liệu mèo Tạo Đọc phát triển API

전체 고양이 조회 라우터 중 error.message 오류

Viết

·

61

·

Đã chỉnh sửa

0

app.get("/cats", (req, res) => {
  try {
    const cats = Cat;
    res.status(200).send({
      success: true,
      data: {
        cats,
      },
    });
  } catch (error) {
    res.status(400).send({
      success: false,
      error: error instanceof Error ? error.message : String(error)
    });
  }
});

강의에서는 단순히

catch (error) {
    res.status(400).send({
      success: false,
      error: error.message
    });
  }

이렇게 나오는데, 저는 이렇게 적으면 error의 타입이 'unknown'이라는 오류 메시지가 뜹니다.

상단에 있는 코드처럼 적어야 오류가 해결됩니다.

 

강의에서는 왜 오류가 나지 않을까요?

node.jsmongodbexpressnestjsssr

Câu trả lời 1

0

안녕하세요, 인프런 AI 인턴입니다.

김지혜님, TypeScript에서는 catch 블록 내의 error 변수 타입이 기본적으로 unknown으로 간주됩니다. 그래서 error.message에 바로 접근하려 하면 타입 오류가 발생할 수 있습니다. 강의에서는 TypeScript의 버전에 따라 이 오류가 발생하지 않을 수 있습니다.

TypeScript 4.4부터 catch 문의 error는 기본적으로 unknown으로 취급됩니다. 이에 따라 error.message에 직접 접근하려면 instanceof로 오류 객체 유형을 확인하거나 error as any로 타입을 단언해야 합니다. 상단의 코드처럼 error instanceof Error ? error.message : String(error)를 통해 Error 타입인지 확인한 후에야 message 속성을 안전하게 참조할 수 있습니다.

유사한 질문과 해결 방법에 대한 내용은 다음 질문에서 확인하실 수 있습니다:
- 이전 강의에서 catch에서 오류나는 분들 & CREATE 안되시는 분들 위해 남깁니다.

여기서 TypeScript의 오류 처리와 관련된 내용을 더 깊이 있게 이해하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của devjihye
devjihye

câu hỏi đã được viết

Đặt câu hỏi