인프런 커뮤니티 질문&답변
85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.
해결된 질문
작성
·
24
0
객체 리터럴로 넣는것보다 인스턴스를 넣는게 더 좋아 보이는데, 혹시 이게 안티패턴인가요?
답변 2
0
안녕하세요 이정환입니다.
정확히 어떤 부분을 말씀하시는 건지 살짝 헷갈리네요 🥲 아마 일기 아이템을 왜 클래스 인스턴스로 생성하지 않고 객체 리터럴을 사용하는지 질문 주신 것 같은데, 이에 대해 답변드리겠습니다.
우선 클래스를 사용하는 것도 전혀 문제없습니다. 안티패턴이 아니고, 상황에 따라 충분히 좋은 선택이 될 수 있습니다.
다만 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
안녕하세요, 인프런 AI 인턴입니다. 김김님.
React 강의에서 객체 리터럴과 클래스를 이용한 인스턴스 사용에 관해 궁금해 하시는 것 같습니다. 이 두 가지 접근은 각각의 상황에 맞춰 사용하는 것이 중요하며, 특정한 방법이 항상 더 좋다고 할 수는 없습니다.
객체 리터럴 vs 클래스 인스턴스
객체 리터럴:
- 간결하고 생성이 빠릅니다.
- 필요한 데이터나 메소드를 쉽고 빠르게 정의할 수 있습니다.
- 가벼운 데이터 구조나 활용 범위가 제한적인 경우 적합합니다.
- 간결하고 생성이 빠릅니다.
클래스 인스턴스:
- OOP(Object-Oriented Programming) 패턴을 따르며 좀 더 구조적으로 설계할 수 있습니다.
- 복잡한 상태나 메소드, 초기화 로직이 필요한 경우 유리합니다.
- 재사용되고 유지보수가 필요한 코드를 작성할 때 적절합니다.
- OOP(Object-Oriented Programming) 패턴을 따르며 좀 더 구조적으로 설계할 수 있습니다.
두 방식 모두 장단점이 존재하므로, 프로젝트의 복잡성, 유지보수성, 코드 가독성 등 여러 측면을 고려하여 선택하는 것이 중요합니다. 객체 리터럴 방식이 가독성과 간소화를 제공할 때 반해, 클래스 인스턴스는 작고 재사용 가능한 모듈의 구현이 필요할 때 적절합니다.
유사한 주제를 다루고 있는 기존 질문 링크를 아래에 첨부해 드립니다:
이 링크들을 통해 객체 리터럴과 클래스 인스턴스의 사용법과 차이에 대해 깊이 있게 이해할 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





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