inflearn logo
강의

Course

Instructor

Bite-Sized React (React.js): From Basics to Practice

12.9) Implementing Diary Management Features 2

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

Resolved

72

hi5there

15 asked

0

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

javascript react node.js

Answer 2

0

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

0

hi5there

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

2

winterlood

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

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

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

0

communityai8509

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

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

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

  1. 객체 리터럴:

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

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

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

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

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

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

프론트엔드 학습 수준 문의

0

8

1

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

34

2

데이터 로딩중 화면만 계속 나와요!!

0

47

2

퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요

0

70

2

이후의 커리큘럼 문의

0

97

2

실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.

0

45

2

최적화 관련 질문있습니다 (useMemo 등)

0

81

3

프로바이더 컴포넌트의 위치는 어떤 기준인가요?

1

77

3

Date 객체에 관련하여 질문드립니다.

0

80

2

리액트 개정판 교재 질문

0

56

2

예제코드가 안나와요!

0

72

2

select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com

0

101

2

onMouseEnter 관련 문의 드립니다

0

87

3

배열의 렌더링 관련 질문 드립니다.

0

69

2

2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.

0

108

2

TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?

0

130

2

useCallback 적용한 onCreate, onUpdate, onDelete 함수..

0

65

1

vs code 자동완성관련 문의

0

102

2

91강 useEffect내에서 상태변화함수 호출시 발생하는 에러

1

173

2

87강 필터 함수 질문

0

63

2

useRef, useState count 비교

0

62

2

안된다고했던 이유가 무엇이었는지 모르겠습니다

0

84

2

투두리스트 실습을 충실히 진행한 상태에서 감정일기장 실습을 따라할 필요가 있을까요?

0

53

2

83강 css 질문입니다

0

51

2