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

sharonhana12님의 프로필 이미지
sharonhana12

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

Vote Entity

BaseEntity는 왜 ./Entity에서 import 해오나요?

해결된 질문

작성

·

331

0

안녕하세요, 강사님!

Entity 생성 시, BaseEntity를 Entity.ts에서 import하시는데 그 이유가 궁금합니다.

typeorm에서 바로 import해도 될 것 같은데, Entity.ts에서 import해오는 이유가 뭔지 잘 모르겠어서요!

답변 1

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요!

이 둘은 사실 다릅니다 ~

import {
  BaseEntity,
} from "typeorm";
import BaseEntity from './Entity';

위에 것이 typeorm에서 가져온 BaseEntity이며

아래에 있는 것은 Entity.ts에서 만들어준 Entity입니다.

그러니 아래에 있는 BaseEntity는

typeorm의 Base Entity + Entity 클래스에 새로 넣어준 것들까지 포함하게 됩니다.

감사합니다!

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

안녕하세요, 강사님. 빠른 응답 감사합니다. 아직 이해가 명쾌하게 되지 않아서 꼬리 질문남깁니다.

 

Entity.ts 파일을 보면, 코드가 아래처럼 되어있는데

import { BaseEntity, CreateDateColumn, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";

export default abstract class Entity extends BaseEntity {

@PrimaryGeneratedColumn()

id: number;

@CreateDateColumn()

createdAt: Date;

@UpdateDateColumn()

updatedAt: Date;

}

설명해주신 typeorm의 Base Entity + Entity 클래스에 새로 넣어준 것들까지 포함합니다. 이 부분은 이해했으나,

저는 export default abstract class Entity extends BaseEntity 이기 때문에, 모듈을 export 시, (BaseEntity가 아닌) Entity라는 이름으로 내보내야하는 것이 아닌가 생각했습니다.

 

일단 클래스 개념도 익숙치 않은데다가 추상클래스를 잘 모르기 때문에 이해를 잘 못하고 있는 것 같은데, 혹시 제가 어떤 부분을 놓치고 있는것인지 설명해주실 수 있으실까요? 혹은 관련 키워드 주시면 큰 도움이 될 것 같습니다! 거듭 감사합니다.

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요! 이거는 제가 네이밍을 혼란스럽게 해서 그런 것 같습니다 ㅎㅎ

export default로 했다면

import로 가져올 때 어떠한 이름으로 가져오든 export default 한 Entity를 가져오게 됩니다.

그러니 import Entity from './'으로 해도

=> class Entity를 가져오게 되며

import BaseEntity from './'을 해도

=> class Entity를 가져오게 되는 것입니다!

감사합니다!

헷갈리시면 다시 질문해 주시면 감사하겠습니다!!

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

아하, 제가 export default에 대해서 제대로 모르고 있었네요. 늘 같은 이름으로만 내보내고 가져오다보니..ㅎㅎ 빠르고 친절한 답변 감사합니다! 강의 잘 듣고 있습니다. 좋은 한 주 보내세요 :)

+) 참고: export (export default 기본 내보내기는 어떤 이름으로도 가져올 수 있습니다.)

sharonhana12님의 프로필 이미지
sharonhana12

작성한 질문수

질문하기