[typescript] 제네릭 인터페이스를 활용하여 다른 객체와의 상호작용 방법

제네릭 인터페이스를 사용하면 TypeScript에서 다른 객체와의 상호작용 방법을 정의하고 일반화할 수 있습니다. 이를 통해 코드의 재사용성을 높일 수 있으며 일반적인 유형의 다양한 객체들과 상호작용하는 함수나 클래스를 생성할 수 있습니다.

제네릭 인터페이스란?

제네릭 인터페이스는 일반적인 유형을 정의하기 위한 인터페이스입니다. 이를 통해 타입의 유연성을 확보하면서, 코드의 재사용성 및 유지보수성을 높일 수 있습니다. 제네릭 인터페이스를 사용하면 함수, 클래스 또는 객체와의 상호작용 방법을 한 번에 정의할 수 있습니다.

예시: 제네릭 인터페이스를 활용한 객체 상호작용

다음은 제네릭 인터페이스를 사용하여 객체와의 상호작용을 구현하는 간단한 예시입니다.

interface Generator<T> {
  generate(): T;
}

class RandomNumberGenerator implements Generator<number> {
  generate(): number {
    return Math.random();
  }
}

class Person {
  name: string;

  constructor(name: string) {
    this.name = name;
  }
}

class PersonGenerator implements Generator<Person> {
  generate(): Person {
    const names = ["Alice", "Bob", "Charlie"];
    const randomIndex = Math.floor(Math.random() * names.length);
    return new Person(names[randomIndex]);
  }
}

function generateAndPrint(generator: Generator<any>) {
  const generatedValue = generator.generate();

  if (generatedValue instanceof Person) {
    console.log(`Generated person's name: ${generatedValue.name}`);
  } else {
    console.log(`Generated number: ${generatedValue}`);
  }
}

const numberGenerator = new RandomNumberGenerator();
const personGenerator = new PersonGenerator();

generateAndPrint(numberGenerator);
generateAndPrint(personGenerator);

위 코드에서는 Generator 제네릭 인터페이스를 정의하고, 구체적인 유형에 대한 구현체를 작성하고 있습니다. 이를 통해 generateAndPrint 함수에서 여러 유형의 객체를 생성하고 출력할 수 있습니다.

마무리

제네릭 인터페이스는 TypeScript에서 다양한 객체와의 상호작용 방법을 일반화하고 재사용 가능한 코드를 작성하는 데 유용한 도구입니다. 객체와의 상호작용에서 타입의 유연성을 유지하면서, 타입 안정성을 확보할 수 있는 제네릭 인터페이스를 적극적으로 활용하여 보다 유연하고 확장 가능한 코드를 작성해 보세요.