[typescript] Nest.js에서 타입스크립트 제네릭 사용하기

Nest.js는 TypeScript로 작성된 서버 애플리케이션을 구축하기 위한 프레임워크로, 제네릭을 사용하여 코드를 보다 유연하고 안전하게 만들 수 있습니다. 제네릭은 여러 유형의 데이터를 다루는 함수나 클래스 등을 작성할 때 사용되며, Nest.js 애플리케이션에서 제네릭을 적용하여 코드의 재사용성을 높일 수 있습니다.

이번 글에서는 Nest.js에서 타입스크립트 제네릭을 적용하는 방법에 대해 알아보겠습니다.

제네릭이란 무엇인가요?

제네릭은 함수, 클래스, 인터페이스를 정의할 때 사용되는 타입 변수입니다. 이를 통해 코드의 유연성을 높일 수 있으며, 재사용성을 높일 수 있습니다. JavaScript와 TypeScript에서 제네릭은 코드의 유형 안정성을 제고하는 데 사용됩니다.

Nest.js에서 제네릭 사용하기

Nest.js 애플리케이션에서 제네릭을 사용하는 방법을 살펴보겠습니다. 아래 예제는 Repository 클래스에서 제네릭을 사용하여 다양한 유형의 엔터티를 다루는 방법을 보여줍니다.

import { Repository } from 'typeorm';

@Injectable()
export class GenericService<T> {
  constructor(
    @InjectRepository(T)
    private readonly repository: Repository<T>,
  ) {}

  async findAll(): Promise<T[]> {
    return this.repository.find();
  }

  async findOne(id: number): Promise<T> {
    return this.repository.findOne(id);
  }

  async create(entity: T): Promise<T> {
    return this.repository.save(entity);
  }

  async update(id: number, entity: T): Promise<T> {
    await this.repository.update(id, entity);
    return this.findOne(id);
  }
}

위의 예제는 GenericService 클래스를 정의하고, Repository 클래스의 제네릭을 활용하여 T 타입의 엔터티를 다루는 메서드를 구현한 것입니다.

이제, GenericService를 사용하여 특정 유형의 엔터티를 다루는 서비스 클래스를 쉽게 만들 수 있습니다.

결론

Nest.js에서 타입스크립트 제네릭을 사용하여 코드를 보다 유연하고 안전하게 작성할 수 있습니다. 제네릭은 여러 유형의 데이터를 다루는 함수나 클래스 등을 작성하는 데 유용하며, Nest.js 애플리케이션에서 재사용성을 높이는 데 도움이 됩니다.

제네릭을 활용하여 Nest.js 애플리케이션을 더욱 확장 가능하고 유지보수하기 쉽도록 만들 수 있습니다.

이상으로 Nest.js에서 타입스크립트 제네릭을 사용하는 방법에 대해 알아보았습니다.

참고 문헌: