我有一个类,我想用一个工厂类来扩展它,这个工厂类将根据输入返回正确的类。
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>()