我有一个组件Grid,它在项目的许多不同部分中被重用。这个Grid有一个可配置的列和许多函数。因此,在我的项目中,我将有Grid-A,Grid-B,Grid-C等等,它们将使用Grid。
Grid-A、Grid-B等等中的代码都非常相似,唯一的区别是网格使用的对象类型。
例如,在Grid-A组件中,我将具有以下构造函数
代码语言:javascript复制constructor(private excelService: ExcelService, private commonService: CommonService, private gridAService: GridAService) { }
onFileChange(evt: any) {
/* some code */
const header: string[] = Object.getOwnPropertyNames(new GridAExcel());
}
initialiseGrid(data: GridADto) {
/* some code */
}在Grid-B中,我将拥有
代码语言:javascript复制constructor(private excelService: ExcelService, private commonService: CommonService, private gridBService: GridBService) { }
onFileChange(evt: any) {
/* some code */
const header: string[] = Object.getOwnPropertyNames(new GridBExcel());
}
initialiseGrid(data: GridBDto) {
/* some code */
}由于函数相同,但它具有不同的参数类型(GridAService与GridBService、GridAExcel与GridBExcel、GridADto与GridBDto),因此我想创建另一个组件来桥接Grid和Grid-A/Grid-B,将其命名为<代码>d21。
因此,它将使用Project-Grid而不是使用Grid的Grid-A,而Project-Grid将使用Grid。在这个Project-Grid中,它应该接受动态参数类型,并且Grid-A会将GridAService、GridAExcel、GridADto传递给Project-Grid。
在Typescript中可以做到这一点吗?如果没有,那么实现类似功能的最佳方式是什么?