【问题标题】:Typescript How to declare a subclass type?Typescript 如何声明子类类型?
【发布时间】:2017-01-12 11:12:46
【问题描述】:

有可能有这样的东西吗?

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。但现在我可以把所有东西都放进去。有没有办法做到这一点?

【问题讨论】:

    标签: javascript reactjs typescript


    【解决方案1】:

    你可以使用联合类型来做到这一点:

    export interface FilterBoxDataProps {
        controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown 
    }
    

    如果你想要FilterBoxElement的所有子类,或者使用泛型:

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

    【讨论】:

      【解决方案2】:

      如果可以是其中一种类型,请使用联合类型 (|):

      export interface FilterBoxDataProps {
          controlElement: FilterBoxControlSuggestions | FilterBoxControlDropDown;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-12
        • 2021-05-03
        • 2017-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-13
        相关资源
        最近更新 更多