2016-04-28 9 views
0

私はいくつかのクラスを持っており、クラス(定義ではなくインスタンス)を受け入れる関数を作成したいと思います。typeofクラス(ctor関数)をパラメータとして受け入れる関数に注釈を付けるにはどうすればよいですか?

class Page1 { 
} 
class Page2 { 
} 

register(Page1); 
register(Page2); 

function Register(pageType){..} 

pageTypeパラメータをアノニケーションする方法は、register(new Page1());は失敗しますか?

基本的に、私はこのC#メソッドのeqivalentをしたい:

void Register(Type pageType){..} 

答えて

1

私はしばらくの間an IoC container for TypeScriptに取り組んできたと私はこれを行うために発見された最良の方法は、ジェネリックを使用していた。

class Page1 { 
} 

class Page2 { 
} 

interface Newable<T> { 
    new(...args: any[]): T; 
} 

function register<T>(pageType: Newable<T>){} 

register<Page1>(Page1); // OK 
register<Page2>(Page2); // OK 

register<Page1>(new Page1()); // Error 
register<Page2>(new Page2()); // Error 
0

あなたは 'タイプ'拡張関数を宣言することができ、それをあなたの登録メソッドで使用することができます。

interface Type extends Function { } 

function Register(pageType : Type){..} 

それからあなたの望むように使いなさい。

class Page1 { 
} 
class Page2 { 
} 

register(Page1); 
register(Page2); 
関連する問題