Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부

typescript에서 entities 가 뭐니/interface **

JBS 12 2023. 11. 1. 21:48

typescript에서 entities 가 뭐니

TypeScript에서 "entities"란 주로 데이터베이스 모델을 나타내는 클래스 또는 스키마를 가리킵니다. "entities"는 데이터베이스 테이블의 레코드를 표현하거나 NoSQL 데이터베이스의 문서를 표현하는 데 사용됩니다.

주로 ORM (Object-Relational Mapping)을 사용하는 경우, 각각의 엔티티 클래스가 데이터베이스 테이블 또는 컬렉션에 매핑됩니다. 이러한 엔티티 클래스는 데이터베이스에서 데이터를 검색, 생성, 업데이트 및 삭제하는 데 사용되며 데이터 모델을 표현하고 유지 관리하는 데 중요한 역할을 합니다.

예를 들어, TypeORM을 사용하는 Nest.js 애플리케이션에서 "entities"는 데이터베이스 테이블에 대한 모델을 나타내는 TypeScript 클래스입니다. 다음은 TypeORM을 사용한 예시입니다:

 

typescript


// user.entity.ts
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  username: string;

  @Column()
  email: string;

  // 다른 엔티티 속성 및 메서드
}


이 예에서 "User" 클래스는 데이터베이스의 "users" 테이블과 매핑되는 엔티티입니다. 각 클래스 속성은 테이블의 열과 일치하며, TypeORM은 이 클래스를 사용하여 데이터베이스와 상호 작용합니다.

"entities"는 데이터 모델을 정의하고, 애플리케이션에서 데이터를 표현하고 관리하는 데 사용됩니다. 데이터베이스 스키마를 TypeScript 클래스로 표현하는 것은 데이터베이스와의 상호 작용을 추상화하고, 더 간단하게 다루고 유지 관리할 수 있는 장점을 제공합니다.


typescript의 class 개념

TypeScript에서 클래스(class)는 객체지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 객체(Instances)를 생성하기 위한 청사진(Blueprint)입니다. 클래스는 속성(멤버 변수)과 메서드(멤버 함수)를 포함하며, 이를 사용하여 객체를 생성하고 객체 간의 상호 작용을 정의할 수 있습니다.

TypeScript에서 클래스를 정의하려면 다음과 같이 class 키워드를 사용합니다:

typescript
class ClassName {
  // 멤버 변수 (속성) 정의
  private name: string;
  public age: number;

  // 생성자(constructor) 메서드
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  // 메서드(멤버 함수) 정의
  public greet(): string {
    return `Hello, my name is ${this.name} and I am ${this.age} years old.`;
  }
}

// 클래스를 사용하여 객체(인스턴스) 생성
const person = new ClassName("Alice", 30);

// 객체의 메서드 호출
console.log(person.greet()); // "Hello, my name is Alice and I am 30 years old."
위의 코드에서 클래스는 다음과 같은 구성 요소를 포함하고 있습니다:

멤버 변수(속성): 클래스 내에서 상태를 나타내는 변수를 정의합니다. 멤버 변수는 클래스 내에서 접근 제어자(public, private, protected)를 사용하여 접근 범위를 지정할 수 있습니다.

생성자(constructor) 메서드: 객체가 생성될 때 초기화를 수행하는 특별한 메서드입니다. 생성자는 constructor 키워드를 사용하여 정의하며, 객체가 생성될 때 실행됩니다.

메서드(멤버 함수): 객체의 동작을 정의하는 함수를 클래스 내에 정의합니다. 이러한 메서드를 사용하여 객체가 수행할 수 있는 작업을 정의하고 객체 간의 상호 작용을 구현합니다.

객체(인스턴스) 생성: 클래스를 사용하여 실제 객체(인스턴스)를 생성할 수 있습니다. 생성자를 호출하여 초기화 값을 전달하고, 객체의 메서드를 호출하여 객체의 동작을 실행합니다.

클래스를 사용하면 코드를 구조화하고 객체 지향적으로 프로그래밍할 수 있으며, 유지 관리성을 향상시키는 데 도움이 됩니다. TypeScript의 클래스는 객체 지향 프로그래밍을 지원하며, 다형성, 상속, 캡슐화 등 OOP의 주요 개념을 구현할 수 있습니다.


export interface Type<T = any> extends Function { new (...args: any[]): T; }

 

주어진 코드는 TypeScript에서 사용되는 Type이라는 인터페이스를 정의하고 있습니다. 이 인터페이스는 제네릭(Generic) 타입을 지원하며, 클래스의 타입을 나타내는데 사용됩니다.

Type 인터페이스의 주요 특징은 다음과 같습니다:

1. Type은 TypeScript의 Function 타입을 확장하고 있으며, 따라서 함수와 생성자 함수 모두 사용할 수 있는 인터페이스를 정의합니다.

2. Type은 제네릭 타입 매개변수 T를 가지고 있으며, 이를 통해 클래스의 반환 타입을 지정할 수 있습니다. 기본적으로 T는 any로 설정되어 있지만, 필요에 따라 다른 타입으로 지정할 수 있습니다.

3. Type 인터페이스는 new 연산자를 사용하여 클래스의 인스턴스를 생성하는 데 사용됩니다. 따라서 Type은 클래스의 생성자 시그니처를 정의하고 있으며, 생성자에 전달되는 매개변수(...args) 및 생성된 인스턴스의 타입(T)을 나타냅니다.

이러한 Type 인터페이스는 주로 TypeScript에서 클래스를 동적으로 생성하고 조작하는 데 사용됩니다. 예를 들어, 의존성 주입 컨테이너를 구현하거나 리플렉션(Reflection)을 통해 클래스를 인스턴스화하는 데 유용할 수 있습니다. 이를 통해 런타임에 다양한 클래스를 다루고 제어할 수 있습니다.