[英]remove duplication from react typescript interfaces
我有以下界面:
export interface AsyncRouteComponent<Props> extends React.Component<Props, AsyncRouteComponentState> {
getInitialProps: ({ assets, data, renderPage }: DocumentProps) => any;
load: () => Promise<React.ReactNode>;
}
export interface AsyncRouteComponentClass<Props> extends AsyncRouteComponent<Props> {
new (props: Props): AsyncRouteComponent<Props>;
getInitialProps: ({ assets, data, renderPage }: DocumentProps) => any;
load: () => Promise<React.ReactNode>;
}
export interface AsyncRouteStateless<Props> extends AsyncRouteComponent<Props> {
(props: Props): AsyncRouteComponent<Props>;
getInitialProps: ({ assets, data, renderPage }: DocumentProps) => any;
load: () => Promise<React.ReactNode>;
}
它们都具有getInitialProps
和load
但是它们的扩展范围不同。
如何减少这些接口中的重复项?
只需将通用方法移至由所有接口扩展的单独接口即可:
interface Common {
getInitialProps: ({ assets, data, renderPage }: DocumentProps) => any;
load: () => Promise<React.ReactNode>;
}
export interface AsyncRouteComponent<Props> extends Common, React.Component<Props, AsyncRouteComponentState> { }
export interface AsyncRouteComponentClass<Props> extends Common, AsyncRouteComponent<Props> {
new (props: Props): AsyncRouteComponent<Props>;
}
export interface AsyncRouteStateless<Props> extends Common, AsyncRouteComponent<Props> {
(props: Props): AsyncRouteComponent<Props>;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.