我有一个类,我想用一个工厂类来扩展它,这个工厂类将根据输入返回正确的类。

class Base<S> {
  prop: S;
  base() { }
}

class A<S> extends Base<S> {
  a() { }
}

class B<S> extends Base<S> {
  b() { }
}


interface TypeA {
  propA: any;
}

interface TypeB {}

function isTypeA(params: TypeA | TypeB): params is TypeA {
  return (params as TypeA).propA !== undefined;
}

function factory(params: TypeA): typeof A;
function factory(params: TypeB): typeof B;
function factory(params: TypeA | TypeB): typeof A | typeof B {
  if (isTypeA(params)) {
    return A;
  } else {
    return B;
  }
}

const param: TypeA = { propA: {} };
const param2: TypeB = {};

class Test extends factory(param) { }

除此之外,我还需要向上传递泛型。如何将泛型从factory函数传递到Base类?

最佳答案

执行以下操作:

class Test<T> extends factory(param)<T> { }

或者,如果您不希望Test是通用的:
class Test extends factory(param)<string>()

10-06 12:26