강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김김님의 프로필 이미지
김김

작성한 질문수

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

12.9) 일기 관리 기능 구현하기 2

85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.

해결된 질문

작성

·

24

0

객체 리터럴로 넣는것보다 인스턴스를 넣는게 더 좋아 보이는데, 혹시 이게 안티패턴인가요?

답변 2

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

정확히 어떤 부분을 말씀하시는 건지 살짝 헷갈리네요 🥲 아마 일기 아이템을 왜 클래스 인스턴스로 생성하지 않고 객체 리터럴을 사용하는지 질문 주신 것 같은데, 이에 대해 답변드리겠습니다.

우선 클래스를 사용하는 것도 전혀 문제없습니다. 안티패턴이 아니고, 상황에 따라 충분히 좋은 선택이 될 수 있습니다.

다만 JavaScript와 React 생태계에서 객체 리터럴을 더 많이 사용하는 가장 큰 이유는, TypeScript의 타입 시스템 덕분입니다. TypeScript가 없었다면 클래스로 데이터 구조를 강제하는 게 의미가 있었겠지만, TypeScript로 타입 안정성을 확보할 수 있다면 굳이 클래스의 무거운 구조를 가져올 필요가 없는 거죠.

// TypeScript - 타입으로 구조 정의
interface DiaryItem {
  id: number;
  content: string;
  date: string;
  emotionId: number;
}

// 객체 리터럴로 간결하게 생성
const diary: DiaryItem = {
  id: 1,
  content: "일기",
  date: "2024-01-01",
  emotionId: 1
};

특별한 메서드나 복잡한 로직이 필요 없는 단순 데이터라면 객체 리터럴이 더 가볍고 간결합니다. 하지만 만약 데이터에 특정 메서드가 필요하거나 복잡한 비즈니스 로직이 있다면, 클래스를 사용하는 게 더 적합할 수 있습니다!

결론적으로 취향과 상황의 문제입니다. 다만 현재 TypeScript + React 생태계에서는 "타입으로 구조 정의 + 객체 리터럴로 데이터 생성" 패턴을 더 많이 사용하는 편이라고 보시면 됩니다 😊

PS. 물론 우리 강의에서는 타입스크립트를 사용하지는 않지만 ... 앞으로 배워나가실 과정에서 더 자주 사용하실 패턴으로 안내드리기 위해 강의도 이렇게 제작되었스빈다.

김김님의 프로필 이미지
김김
질문자

최근 자바를 가장 많이 사용해서 그런지 클래스를 new 하는게 더 간결해보여서 익숙하지 않네요... 그래도 객체리터럴을 쓰면 new 쓰면서 파라미터 순서를 기억할 필요가 없다는 장점이 보이는것 같습니다!

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

역시 뭔가 질문에서 객체지향의 향기가 느껴졌습니다 ㅋㅋㅋㅋ! 너무 좋은 질문이었던 것 같아요 👍👍👍

타입스크립트가 만약 세상에 존재하지 않았다면 말씀하신 방법대로 클래스 인스턴스로 일기 아이템을 생성하는 게 확실히 좋은 선택지였을 것 같아요! 타입 체크 없이 객체 리터럴만 쓰면 오타나 누락된 속성을 찾기 어렵기 때문에 ... ㅠㅠ

하지만 타입스크립트 덕분에 요런 객체 리터럴의 간결함과 안정성을 동시에 가져갈 수 있게 되었다보니 요렇게 자리잡게 된 것 같습니다.

0

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

React 강의에서 객체 리터럴과 클래스를 이용한 인스턴스 사용에 관해 궁금해 하시는 것 같습니다. 이 두 가지 접근은 각각의 상황에 맞춰 사용하는 것이 중요하며, 특정한 방법이 항상 더 좋다고 할 수는 없습니다.

객체 리터럴 vs 클래스 인스턴스

  1. 객체 리터럴:

    • 간결하고 생성이 빠릅니다.
    • 필요한 데이터나 메소드를 쉽고 빠르게 정의할 수 있습니다.
    • 가벼운 데이터 구조나 활용 범위가 제한적인 경우 적합합니다.
  2. 클래스 인스턴스:

    • OOP(Object-Oriented Programming) 패턴을 따르며 좀 더 구조적으로 설계할 수 있습니다.
    • 복잡한 상태나 메소드, 초기화 로직이 필요한 경우 유리합니다.
    • 재사용되고 유지보수가 필요한 코드를 작성할 때 적절합니다.

두 방식 모두 장단점이 존재하므로, 프로젝트의 복잡성, 유지보수성, 코드 가독성 등 여러 측면을 고려하여 선택하는 것이 중요합니다. 객체 리터럴 방식이 가독성과 간소화를 제공할 때 반해, 클래스 인스턴스는 작고 재사용 가능한 모듈의 구현이 필요할 때 적절합니다.

유사한 주제를 다루고 있는 기존 질문 링크를 아래에 첨부해 드립니다:

이 링크들을 통해 객체 리터럴과 클래스 인스턴스의 사용법과 차이에 대해 깊이 있게 이해할 수 있을 것입니다.

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

김김님의 프로필 이미지
김김

작성한 질문수

질문하기