2017-01-12 6 views
4

このようなことは可能でしょうか?Typescriptサブクラスの型を宣言するには?

export abstract class FilterBoxElement { 
    abstract getEntities: any; 
} 
export interface FilterBoxControlSuggestions extends FilterBoxElement { 
    getEntities: // some implementation with different parameters 
} 
export interface FilterBoxControlDropDown extends FilterBoxElement { 
    getEntities: // some implementation with different parameters 
} 

export interface FilterBoxDataProps { 
    controlElement: FilterBoxElement // FilterBoxControlSuggestions or FilterBoxControlDropDown 
} 

私はcontrolElementFilterBoxControlSuggestionsまたはFilterBoxControlDropDownなければならないこととします。しかし、今はすべてをその中に入れることができます。これを達成する方法はありますか?

答えて

5

あなたは共用体型でそれを行うことができます:あなたはFilterBoxElementのすべてのサブクラスたい場合

export interface FilterBoxDataProps { 
    controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown 
} 

またはジェネリックと:

export interface FilterBoxDataProps<T extends FilterBoxElement> { 
    controlElement: T 
} 
+0

ああ。ありがとう。 –

3

を、それが一種類かの可能性がある場合その他の場合は、ユニオンタイプ(|)を使用してください。

export interface FilterBoxDataProps { 
    controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown; 
} 
関連する問題