假设我有一个类(Person
),它有两个可以有多个实现的方法(getFirstName
和getSurname
),这些实现可以自由组合,以创建每一个置换,那么如果每个函数有两个实现:A
,B
和a
,b
,可能的排列是Aa
,Ab
,Ba
,Bb
.在这种情况下,如果我使用简单继承,我将需要四个独立的子类.
使用C++,可以使用模板执行以下操作:
abstract class FirstName {
public abstract getFirstName?(data: string): string | null;
}
abstract class Surname {
public abstract getSurname?(data: string): string | null;
}
class Person<A extends FirstName, B extends Surname> implements A, B {
constructor() {}
}
const person = new Person<FirstNameImplementation1, SurnameImplementation1>();
console.log(person.getFirstName());
以上在Typescript中不起作用。person
的定义应该在编译时发生,泛型类型应该在示例化时很容易指定。有没有办法在Typescript中正确地完成以上操作?我意识到我可以将函数作为参数传递,但我认为一定有办法巧妙地使用泛型完成这一操作。
1条答案
按热度按时间b4lqfgs41#
我有一个可行的解决办法,但我想还有更好的办法: