我有一个类,我想用工厂类扩展,它将根据输入返回正确的类。
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) { }
除此之外,我需要一直传递泛型。如何将通用从工厂函数传递到Base
类?
答案 0 :(得分:2)
这样做:
Test
或者,如果您不希望class Test extends factory(param)<string>()
具有通用性:
// LoginController.php
public function username()
{
return 'username';
}
// User.php
public function getAuthIdentifierName() {
return 'username';
}