2016-07-13 58 views
0

我愿做这样的事情:有没有什么办法在类之间共享泛型类型变量?

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

它没有任何意义,因为它是为'X'可以有很多的东西,它不设置。在内部类中,包含类和嵌套类之间存在关系。也许你可以更多地解释你的情况,这样会更有意义。 –

回答

1

有没有办法做到这一点;也没有任何意义。可能有许多AB每个实例都使用不同的类型参数。尝试从你正在编写的代码的角度来问你一个不同的问题。看起来你有一个XY问题(http://xyproblem.info/)。

0

我不知道如果这能帮助你,但它可能是你的问题可以通过传承来解决:

public class List<E>{ 
.... 
} 
public class ArrayList<E> implements List{ 
} 
现在

,当你做一个列表和一个ArrayList的是,名单中他们需要是同一类型。例如:

public List<String> myList = new ArrayList(true, false, true, true) 

您将不被允许创建该列表,因为它们需要是相同类型或至少实现相同类型。 (我说实施相同的类型,因为如果你列出了那么你可以有一个ArrayList,一个LinkedList和其他一堆)希望这有助于

0

这里有一个想法:你可以有一个工厂方法A创建绑定到同XAB一个实例:

class B<X> { 
    b_stuff: X; 
} 

class A<X, Y> { 
    a1_stuff: Y; 
    a2_stuff: X; 

    createB(...args: any[]): X { 
     // create B using args 
    } 
} 
相关问题