2016-04-13 12 views
0

クラス・タイプのクラスのメンバーが必要です。このような何か:クラスのクラス・タイプのメンバークラス

class Foo {} 
class Bar { 
    static public FooBar:class = Foo; 
}; 

ここFooBarメンバーはプログラム的に設定されます。

+0

私はそういうことをすることはできないと思っていますが、そうする代替方法があるかもしれません。 FooBarのBarクラスでの使用は何ですか? – fbid

+0

これは多かれ少なかれラッパーとして使用されます。そのため、適切なモデルを個別に取得する代わりに、 'ProjectService.Model'のようなことをすることができます。 – astex

+0

これにdownvoteがあり、なぜ私は確信していません。誰かがこれが悪い質問である理由を説明できますか? – astex

答えて

1

私はこのような何かが、あなたのニーズに合うかもしれないと思う:

class Foo 
{ 
    constructor(a: string) 
    { 
     console.log("Foo.constructor"); 
    } 
} 

class Foo2 
{ 
    constructor() 
    { 
     console.log("Foo2.constructor"); 
    } 
} 

class Bar 
{ 
    public static FooBar: {new(...a: any[]): any}; 
} 

Bar.FooBar = Foo; 
let a = new Bar.FooBar('123'); 

Bar.FooBar = Foo2; 
let b = new Bar.FooBar(); 

は、この情報がお役に立てば幸いです。

+0

'any'型とmonkey-patchを使ってください。 – astex

+1

@astex new(... a:any []):anyの 'any'戻り値の型は、new演算子で呼び出したときにクラスからインスタンス化されたオブジェクトを参照します。より具体的なものでもよいし、一般的なものでもよい。任意の引数をとり、_any_(インスタンス)* –

+0

Johnが正しい* newable型(クラス)に似ています。残念ながら、ジェネリック型は静的メンバーでは機能しません。 – Amid

関連する問題