我的任务是改进网络平台中的过滤功能。几个组件继承自父组件“Root-table”,这些组件显示包含各种信息的表。
根表有一个带数据表的过滤函数,用自己的自定义过滤器替换dataSource.filterPredicate。有些子组件在必要时会覆盖父组件,他们希望我不需要覆盖。
基本上,除了搜索框之外,某些组件还具有可点击按钮以应用其他过滤条件。当他们覆盖父过滤器功能时,他们实际上是再次运行代码,底部添加了一行来过滤这些按钮过滤器的结果。
不幸的是,他们没有提前计划这个设计和1)并非所有对象都有过滤器和2)每个具有过滤器的对象使用不同的名称来确定它所基于的数据。 (Booking.status为1个示例,Vehicle.type为另一个)
这是我的问题。他们似乎坚决认为没有子功能覆盖父母几乎完全相同的代码栏1行。 (总共约15行)。
我的第一个想法是,将一个函数传递给过滤器,这个过滤器是可选的,并在必要时由孩子们给出,以运行那一行。或者,拥有一个始终被调用但什么都不做的父函数,只有需要它的孩子才能覆盖它。
这些都不可能,因为filterPredicate属于它自己的范围,我不能从过滤器访问其他函数,也不能改变必须适合基过滤器的参数(如数据:T,过滤器) :string)。
他们现在已经建议有一个函数返回过滤器函数,并在那里添加了额外的功能,尽管这只运行一次。
我是Typescript的新手,不知道我还能做些什么。除了建议他们保留原样的一些小重复代码,或重组他们的对象以更好地适应这种设计(两者都被拒绝),我还有其他选择吗?