可能有这样的事情吗?

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必须是FilterBoxControlSuggestionsFilterBoxControlDropDown。但是现在我可以将所有内容放入其中。有没有办法做到这一点?

最佳答案

您可以使用并集类型:

export interface FilterBoxDataProps {
    controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown
}

如果需要FilterBoxElement的所有子类,请使用泛型:

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

10-05 20:51
查看更多