TypeScript, 제네릭에서 클래스 타입 사용 (Using Class Types in Generics)

제네릭의 타입 어노테이션에 클래스 타입을 받기 위해서는 클래스의 생성자 함수 타입을 타입 어노테이션으로 받으면 됩니다. 즉, 다음처럼요.

function create<Type>(c: { new (): Type }): Type {
  return new c();
}

위의 함수는 클래스 타입을 제네릭 타입으로 받아 해당 클래스의 객체를 생성해줍니다. 예제 코드는 다음과 같습니다.

class Animal {
  constructor(name: string) { 
    // ...
  }
}
 
function createInstance<A>(c: new (name: string) => A, name: string): A {
  return new c(name);
}
 
createInstance(Animal, "tiger");

Animal의 생성자가 string 타입의 인자를 받는다는 점에 고려하여 클래스의 생성자 함수 타입을 정의하고 있고 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다