刘光辉
3 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
interface InterfaceParam {
  field?: string;
  relationField?: unknown;
  sourceType?: number;
  [key: string]: unknown;
}
 
/** Build parameters for a new interface while retaining mappings for fields shared with the previous interface. */
export function mergeInterfaceParams(nextParams: InterfaceParam[], previousParams: InterfaceParam[] = []): InterfaceParam[] {
  const previousByField = new Map(previousParams.filter((item) => item.field).map((item) => [item.field, item]));
 
  return nextParams.map((item) => {
    const previous = item.field ? previousByField.get(item.field) : undefined;
    return {
      ...item,
      relationField: previous?.relationField ?? '',
      sourceType: previous?.sourceType ?? 1,
    };
  });
}