2016-08-02 8 views
0

TypeScriptでジェネリックの実装プロパティを強制したいと思います。 私の現在のコードは次のとおりです。interface IEventHandler<TArgs> where TArgs : has_property_senderよう力ジェネリックスがTypeScriptのプロパティを実装しています(ジェネリックの制約)

interface IEventHandler<TArgs> 
{ 
    (args: TArgs): void 
} 


interface ISubscribable<THandlerType> 
{ 
    bind(fn: THandlerType): void; 

    unbind(fn: THandlerType): void; 
} 

interface IEvent<TArgs> extends ISubscribable<IEventHandler<TArgs>> 
{ 
} 

何か。私はTypeScriptのどこに存在しないのか知っているので、別のインターフェースで回避策を得ることができますか?

これはTypeScriptで可能ですか?

編集:
​​。最適化できるかどうかわかりません。

答えて

1

あなたは:例えば、活字体で

interface has_property_sender { 
    sender: Object; 
} 

interface MyArgs extends has_property_sender { 
    property: Object; 
} 

interface IEventHandler<TArgs extends has_property_sender> 
{ 
    (args: TArgs): void 
} 
+0

感謝をconstraints(セクション "ジェネリック制約")を使用することができます。 私は数時間後にそれをすることができます。あなたの答えは正しい方法です(これはTypeScriptの3日目です)。私はあなたのアプローチをすでに試みましたが、送信者にタイプジェネリックのものを与えることができました。 時間がある場合は、最適化できる場合は、コードの一番下に目を向けてください。いくつかの疑問符が付いたコメントがあります。 – Makla

+1

@Makla - あなたのコードをチェックしましたが、今は「編集を削除する」方法が見つかりませんでした... – TSV

関連する問題