¿Es posible tener algo así?
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 }
Quiero que controlElement
tenga que ser FilterBoxControlSuggestions
o FilterBoxControlDropDown
. Pero ahora mismo puedo poner todo en él. ¿Hay una manera de lograr esto?
Podrías hacerlo con un tipo de unión:
export interface FilterBoxDataProps { controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown }
O con genéricos si desea todas las subclases de FilterBoxElement:
export interface FilterBoxDataProps<T extends FilterBoxElement> { controlElement: T }
Si puede ser de un tipo u otro, utilice un tipo de unión ( |
):
export interface FilterBoxDataProps { controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown; }