[typescript] 제네릭 인터페이스를 활용하여 다양한 데이터 소스에 대한 접근 방법

이번 포스트에서는 TypeScript의 제네릭(Generic) 인터페이스를 활용하여 다양한 데이터 소스에 접근하는 방법에 대해 알아보겠습니다. 제네릭을 사용하면 코드의 재사용성을 높일 수 있고, 다양한 유형의 데이터에 접근할 수 있는 유연한 방법을 제공합니다.

제네릭(Generic) 인터페이스란?

제네릭 인터페이스는 다양한 유형의 데이터를 처리하는 데 사용됩니다. 이를 통해 동일한 로직을 사용하여 여러 종류의 데이터 소스에 접근할 수 있습니다. 이는 코드의 중복을 줄이고 일반화된 로직을 작성하는 데 도움이 됩니다.

interface DataRepository<T> {
  getById(id: number): T;
  save(item: T): void;
}

위 예제에서 DataRepository는 제네릭으로 선언되었습니다. 이제 이 인터페이스를 사용하여 여러 유형의 데이터에 접근할 수 있습니다.

제네릭 인터페이스 활용 예시

1. 데이터베이스 접근

class DatabaseRepository<T> implements DataRepository<T> {
  getById(id: number): T {
    // 데이터베이스에서 id에 해당하는 데이터를 가져와서 반환
  }

  save(item: T): void {
    // 데이터를 데이터베이스에 저장
  }
}

const userRepo = new DatabaseRepository<User>();
const userData = userRepo.getById(123);
userRepo.save(newUser);

위 예시에서 DatabaseRepository는 제네릭 인터페이스를 구현하고 있습니다. 이를 통해 유저 데이터나 다른 유형의 데이터를 동시에 다룰 수 있습니다.

2. 외부 API 접근

class ApiRepository<T> implements DataRepository<T> {
  getById(id: number): T {
    // 외부 API에서 id에 해당하는 데이터를 가져와서 반환
  }

  save(item: T): void {
    // 데이터를 외부 API에 저장
  }
}

const postRepo = new ApiRepository<Post>();
const postData = postRepo.getById(456);
postRepo.save(newPost);

마찬가지로, ApiRepository를 통해 외부 API에서 데이터를 가져오고 저장할 수 있습니다.

이와 같이 제네릭 인터페이스를 활용하면 다양한 데이터 소스에 일반화된 로직을 적용할 수 있으며, 코드의 재사용성을 높일 수 있습니다.

제네릭을 사용하면 코드를 보다 간결하게 작성할 수 있고, 유지보수가 용이해집니다. TypeScript의 제네릭을 적극적으로 활용하여 다양한 데이터 소스에 접근하는 방법에 대해 고민해보시기 바랍니다.