我想做这样的事情:
class B<X> {
b_stuff: X;
// etc...
}
// X is the same type as above
class A<X, Y> {
a1_stuff: Y;
a2_stuff: X;
// etc...
}
有没有办法在类之间共享类似这样的类型变量?我认为嵌套类是这样做的方法,但显然TypeScript不支持这个。
答案 0 :(得分:1)
没有办法做到这一点;它也没有任何意义。可能有许多A
和B
个实例,每个实例都使用不同的类型参数进行实例化。尝试从您尝试编写的代码的角度提出另一个问题来解决问题。您似乎遇到了XY问题(http://xyproblem.info/)。
答案 1 :(得分:0)
我不确定这是否对您有所帮助,但您的问题有可能通过继承来解决:
public class List<E>{
....
}
public class ArrayList<E> implements List{
}
现在当你从列表中创建一个列表和一个ArrayList时,它们需要是相同的类型。例如:
public List<String> myList = new ArrayList(true, false, true, true)
您将不被允许创建该列表,因为它们需要是相同类型或至少实现相同类型。 (我说实现相同的类型,因为如果你创建了一个列表然后你可以有一个ArrayList,一个LinkedList和一堆其他的)希望这有帮助
答案 2 :(得分:0)
以下是一个想法:您可以在A
中使用工厂方法创建B
的实例,并绑定到与X
相同的A
:
class B<X> {
b_stuff: X;
}
class A<X, Y> {
a1_stuff: Y;
a2_stuff: X;
createB(...args: any[]): X {
// create B using args
}
}