2016-12-01 19 views
0

私はそれが動作するかもしれないことを私にするいくつかの例を見ましたが、私は働くために次を得ることができません。以下では、Cジェネリックはクラスタイプを表し、Iジェネリックはインターフェイスタイプを表します。ただし、return new SomeClass()Type SomeClass is not assignable to type Iと不平を言います。一般的なタイスクリプトのインターフェイス

class SomeFactory implements ISomeFactory { 
    createSomeModule<C, I>(clas?: C, options?: IFactoryOptions): I { 
      switch (typeof (clas)) { 
       case 'SomeClass': 
        return new SomeClass(); 
       ... 
      } 
    } 
} 

これは私がしたいと思うように働くはずですか?何か不足していますか?それだけではサポートされていません。私はTypescriptバージョン2.10でVSコードを実行しています。

+0

'typeof'は常に' 'object''を返します。 – SLaks

+0

switch文は 'typeof'でうまく動作します。問題は '新しいSomeClass()'をジェネリックインターフェイス 'I'にキャストすることです。 – webteckie

+0

タイプチェックを無効にするには、次のようにします: 'new Any SomeClass()をanyとして返す; ' – Paleo

答えて

0

Iにキャストすることができます。

return <I>new SomeClass(); 

それともCIを拡張することができます。

createSomeModule<C extends I, I> 
//... 
return <C>new SomeClass(); 
関連する問題