可能有这样的事情吗?
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
}
我希望
controlElement
必须是FilterBoxControlSuggestions
或FilterBoxControlDropDown
。但是现在我可以将所有内容放入其中。有没有办法做到这一点? 最佳答案
您可以使用并集类型:
export interface FilterBoxDataProps {
controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown
}
如果需要FilterBoxElement的所有子类,请使用泛型:
export interface FilterBoxDataProps<T extends FilterBoxElement> {
controlElement: T
}