reactjs - 从反应打字稿接口中删除重复
问题描述
我有以下接口:
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>;
}
推荐阅读
- ios - 如何将 NSString 转换为具有以下格式的 NSDate:
- regex - Spark-SQL 是否支持使用 regex 规范的 Hive Select All Query with except Columns
- c# - 自定义集合在 Template10 中不起作用,但在空白项目中起作用
- php - 在控制器中检索单个 FormType 的值
- c# - 捕获 C# winform 应用程序中的所有异常
- grammar - 在 Bison(或 yacc )中,是否存在由语法定义的顺序?
- c# - 在实体框架核心中获取无效的列名'EmploymentTypeEntityEmploymentTypeID
- python - Web 服务器可以从脚本中检测登录吗?
- windows - 如何处理错误并继续使用 GOTO 缺少 LABEL?
- css - 将 h1 文本附加到背景(用于基本视差效果)纯 CSS,同时在 div 中保持对齐