Repository: infonl/dimpact-zaakafhandelcomponent
Pull request #3176: chore: remove `any` from codebase
Author: login: xiduzo
Created: 2025-04-25T07:54:58Z | Merged: 2025-04-25T09:41:46Z

This pull request introduces several improvements to type safety, refactors code for better maintainability, and removes unused imports across multiple files. The key changes include replacing `any` types with more specific types, enhancing the `DialogData` class to support generic parameters, and cleaning up unused dependencies in components.

### Type Safety Improvements:
* Updated function parameters and return types in `src/e2e/step-definitions/zaak.ts` to replace `any` with `number`, `unknown`, or specific object shapes. [[1]](diffhunk://#diff-14162a669617ec1a3d444c5fbd477deb3e031abda24ac142b631cf818cf9ccffL23-R24) [[2]](diffhunk://#diff-14162a669617ec1a3d444c5fbd477deb3e031abda24ac142b631cf818cf9ccffL291-R291)
* Refactored `DialogData` in `src/main/app/src/app/shared/dialog/dialog-data.ts` to support generic `Value` and `Result` types, improving flexibility and type safety.
* Replaced `any` with more specific types such as `Record<string, unknown>` or `unknown[]` in `src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts` and `src/main/app/src/app/admin/parameter-edit/parameter-edit.component.ts`. [[1]](diffhunk://#diff-7fde12852ed76c67b4818263c13188706054f2c47ca464ab90192d9b9770cb74L49-R56) [[2]](diffhunk://#diff-7fde12852ed76c67b4818263c13188706054f2c47ca464ab90192d9b9770cb74L65-R79) [[3]](diffhunk://#diff-81b3a296e46d334b2bea94cc612b5c7771d4ecf06ba8d15af81385496efb4c33L746-R746)

### Code Refactoring:
* Removed unused imports and services from `src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts`, such as `ReferentieTabelService` and `VertrouwelijkaanduidingToTranslationKeyPipe`. [[1]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL23-R24) [[2]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL177-L178)
* Simplified array and column definitions in `ZaakViewComponent` by using `as const` to enforce immutability.
* Updated dialog-related methods in `ZaakViewComponent` to use destructured parameters instead of `any[]`, improving readability and type safety. [[1]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL714-R701) [[2]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL761-R750) [[3]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL803-R795)

### Dependency Cleanup:
* Removed unused constructor dependencies and imports in `ZaakViewComponent`, reducing code clutter. [[1]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL177-L178) [[2]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL23-R24)
* Cleaned up unused methods and replaced redundant code patterns with more concise alternatives. [[1]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL1323-R1319) [[2]](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL1106-R1103)

### Miscellaneous Enhancements:
* Added `required` decorator to enforce mandatory inputs in `ZaakdataFormComponent`.
* Improved null safety by using optional chaining in certain conditions, such as checking `groupIds` in `ZaakViewComponent`.

Solves [PZ-6493](https://dimpact.atlassian.net/browse/PZ-6493)


Diff:
diff --git a/src/e2e/step-definitions/zaak.ts b/src/e2e/step-definitions/zaak.ts
index 612350bf43..00f5c82b8e 100644
--- a/src/e2e/step-definitions/zaak.ts
+++ b/src/e2e/step-definitions/zaak.ts
@@ -20,8 +20,8 @@ const TEST_PERSON_HENDRIKA_JANSE_PHONE_NUMBER = "0612345678";
 
 async function checkZaakAssignment(
   this: CustomWorld,
-  zaakNumber: any,
-  userProfile: any,
+  zaakNumber: number,
+  userProfile: unknown,
 ) {
   await this.expect(
     this.page
@@ -288,7 +288,7 @@ Then(
 
     const pdf = require("pdf-parse");
     const dataBuffer = fs.readFileSync("./ExportData/" + suggestedFileName);
-    await pdf(dataBuffer).then(function (data: any) {
+    await pdf(dataBuffer).then((data: { text: string }) => {
       fs.writeFileSync("./ExportData/actual.txt", data.text);
     });
 
diff --git a/src/main/app/src/app/admin/parameter-edit/parameter-edit.component.ts b/src/main/app/src/app/admin/parameter-edit/parameter-edit.component.ts
index d3ef5d85c6..4735286f34 100644
--- a/src/main/app/src/app/admin/parameter-edit/parameter-edit.component.ts
+++ b/src/main/app/src/app/admin/parameter-edit/parameter-edit.component.ts
@@ -743,7 +743,7 @@ export class ParameterEditComponent
     }
   }
 
-  getBeschikbareMailtemplates(mailtemplate: MailtemplateKoppelingMail): any {
+  getBeschikbareMailtemplates(mailtemplate: MailtemplateKoppelingMail) {
     return this.mailtemplates.filter(
       (template) => template.mail === mailtemplate,
     );
diff --git a/src/main/app/src/app/gebruikersvoorkeuren/zoekopdracht/zoekopdracht.component.ts b/src/main/app/src/app/gebruikersvoorkeuren/zoekopdracht/zoekopdracht.component.ts
index 4a6006fd33..4168351800 100644
--- a/src/main/app/src/app/gebruikersvoorkeuren/zoekopdracht/zoekopdracht.component.ts
+++ b/src/main/app/src/app/gebruikersvoorkeuren/zoekopdracht/zoekopdracht.component.ts
@@ -15,6 +15,7 @@ import { MatDialog } from "@angular/material/dialog";
 import { Subscription } from "rxjs";
 import { InboxDocumentListParameters } from "../../documenten/model/inbox-document-list-parameters";
 import { OntkoppeldDocumentListParameters } from "../../documenten/model/ontkoppeld-document-list-parameters";
+import { DatumRange } from "../../zoeken/model/datum-range";
 import { ZoekParameters } from "../../zoeken/model/zoek-parameters";
 import { GebruikersvoorkeurenService } from "../gebruikersvoorkeuren.service";
 import { Werklijst } from "../model/werklijst";
@@ -129,6 +130,9 @@ export class ZoekopdrachtComponent implements OnInit, OnDestroy {
   }
 }
 
-export interface ZoekFilters {
+export type ZoekFilters = {
   readonly filtersType: string;
-}
+  zoeken?: Record<string, unknown>;
+  filters?: Record<string, undefined | { values: Array<unknown> }>;
+  datums?: Record<string, DatumRange>;
+};
diff --git a/src/main/app/src/app/shared/dialog/dialog-data.ts b/src/main/app/src/app/shared/dialog/dialog-data.ts
index 54ab3f7614..22f612437f 100644
--- a/src/main/app/src/app/shared/dialog/dialog-data.ts
+++ b/src/main/app/src/app/shared/dialog/dialog-data.ts
@@ -6,14 +6,14 @@
 import { Observable } from "rxjs";
 import { AbstractFormField } from "../material-form-builder/model/abstract-form-field";
 
-export class DialogData<T = unknown> {
+export class DialogData<Value = unknown, Result = unknown> {
   public confirmButtonActionKey = "actie.ja";
-  public cancelButtonActionKey = "actie.annuleren";
-  public value: T = null as T;
+  public cancelButtonActionKey: string | null = "actie.annuleren";
+  public value: Value = null as Value;
 
   constructor(
     public formFields: AbstractFormField[],
-    public fn?: (results: any[]) => Observable<any>,
+    public fn?: (result: Result) => Observable<unknown>,
     public melding?: string,
     public uitleg?: string,
   ) {}
diff --git a/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts b/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts
index 09e1b87f9b..d6fdb57d27 100644
--- a/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts
+++ b/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts
@@ -3,6 +3,7 @@
  * SPDX-License-Identifier: EUPL-1.2+
  */
 
+import { ComponentType } from "@angular/cdk/portal";
 import {
   AfterViewInit,
   Component,
@@ -20,9 +21,8 @@ import { TranslateService } from "@ngx-translate/core";
 import moment from "moment";
 import { forkJoin } from "rxjs";
 import { map, tap } from "rxjs/operators";
-import { VertrouwelijkaanduidingToTranslationKeyPipe } from "src/app/shared/pipes/vertrouwelijkaanduiding-to-translation-key.pipe";
 import { DateConditionals } from "src/app/shared/utils/date-conditionals";
-import { ReferentieTabelService } from "../../admin/referentie-tabel.service";
+import { ZaakbeeindigReden } from "../../admin/model/zaakbeeindig-reden";
 import { ZaakafhandelParametersService } from "../../admin/zaakafhandel-parameters.service";
 import { BAGService } from "../../bag/bag.service";
 import { BAGObject } from "../../bag/model/bagobject";
@@ -94,9 +94,9 @@ export class ZaakViewComponent
   takenDataSource = new MatTableDataSource<ExpandableTableData<Taak>>();
   allTakenExpanded = false;
   toonAfgerondeTaken = new FormControl(false);
-  takenFilter: any = {};
+  takenFilter: Record<string, unknown> = {};
   takenLoading = false;
-  takenColumnsToDisplay: string[] = [
+  takenColumnsToDisplay = [
     "naam",
     "status",
     "creatiedatumTijd",
@@ -104,10 +104,10 @@ export class ZaakViewComponent
     "groep",
     "behandelaar",
     "id",
-  ];
+  ] as const;
 
   historie = new MatTableDataSource<HistorieRegel>();
-  historieColumns: string[] = [
+  historieColumns = [
     "datum",
     "gebruiker",
     "wijziging",
@@ -115,32 +115,31 @@ export class ZaakViewComponent
     "oudeWaarde",
     "nieuweWaarde",
     "toelichting",
-  ];
+  ] as const;
   betrokkenen = new MatTableDataSource<ZaakBetrokkene>();
-  betrokkenenColumns: string[] = [
+  betrokkenenColumns = [
     "roltype",
     "betrokkenegegevens",
     "betrokkeneidentificatie",
     "roltoelichting",
     "actions",
-  ];
+  ] as const;
   bagObjectenDataSource = new MatTableDataSource<BAGObjectGegevens>();
   gekoppeldeBagObjecten: BAGObject[] = [];
-  bagObjectenColumns: string[] = [
+  bagObjectenColumns = [
     "identificatie",
     "type",
     "omschrijving",
     "actions",
-  ];
-  gerelateerdeZaakColumns: string[] = [
+  ] as const;
+  gerelateerdeZaakColumns = [
     "identificatie",
     "zaaktypeOmschrijving",
     "statustypeOmschrijving",
     "startdatum",
     "relatieType",
-  ];
+  ] as const;
   notitieType = NotitieType.ZAAK;
-  editFormFields = new Map<string, any>();
   dateFieldIcon = new Map<string, TextIcon>();
   viewInitialized = false;
   loggedInUser!: GeneratedType<"RestLoggedInUser">;
@@ -174,8 +173,6 @@ export class ZaakViewComponent
     private translate: TranslateService,
     private zaakKoppelenService: ZaakKoppelenService,
     private bagService: BAGService,
-    private referentieTabelService: ReferentieTabelService,
-    private vertrouwelijkaanduidingToTranslationKeyPipe: VertrouwelijkaanduidingToTranslationKeyPipe,
   ) {
     super();
   }
@@ -674,8 +671,8 @@ export class ZaakViewComponent
   }
 
   createUserEventListenerDialog(planItem: PlanItem): {
-    dialogComponent: any;
-    dialogData: any;
+    dialogComponent: ComponentType<unknown>;
+    dialogData: { zaak: Zaak; planItem: PlanItem };
   } {
     switch (planItem.userEventListenerActie) {
       case UserEventListenerActie.IntakeAfronden:
@@ -689,20 +686,14 @@ export class ZaakViewComponent
     }
   }
 
-  createUserEventListenerIntakeAfrondenDialog(planItem: PlanItem): {
-    dialogComponent: any;
-    dialogData: any;
-  } {
+  createUserEventListenerIntakeAfrondenDialog(planItem: PlanItem) {
     return {
       dialogComponent: IntakeAfrondenDialogComponent,
       dialogData: { zaak: this.zaak, planItem: planItem },
     };
   }
 
-  createUserEventListenerZaakAfhandelenDialog(planItem: PlanItem): {
-    dialogComponent: any;
-    dialogData: any;
-  } {
+  createUserEventListenerZaakAfhandelenDialog(planItem: PlanItem) {
     return {
       dialogComponent: ZaakAfhandelenDialogComponent,
       dialogData: { zaak: this.zaak, planItem: planItem },
@@ -711,7 +702,7 @@ export class ZaakViewComponent
 
   private openZaakAfbrekenDialog(): void {
     this.actionsSidenav.close();
-    const dialogData = new DialogData(
+    const dialogData = new DialogData<unknown, { reden: ZaakbeeindigReden }>(
       [
         new SelectFormFieldBuilder()
           .id("reden")
@@ -725,9 +716,9 @@ export class ZaakViewComponent
           .validators(Validators.required)
           .build(),
       ],
-      (results: any[]) =>
+      ({ reden }) =>
         this.zakenService
-          .afbreken(this.zaak.uuid, results["reden"])
+          .afbreken(this.zaak.uuid, reden)
           .pipe(
             tap(() => this.websocketService.suspendListener(this.zaakListener)),
           ),
@@ -749,7 +740,7 @@ export class ZaakViewComponent
   }
 
   private openZaakHeropenenDialog(): void {
-    const dialogData = new DialogData(
+    const dialogData = new DialogData<unknown, { reden: string }>(
       [
         new InputFormFieldBuilder()
           .id("reden")
@@ -758,9 +749,9 @@ export class ZaakViewComponent
           .maxlength(100)
           .build(),
       ],
-      (results: any[]) =>
+      ({ reden }) =>
         this.zakenService
-          .heropenen(this.zaak.uuid, results["reden"])
+          .heropenen(this.zaak.uuid, reden)
           .pipe(
             tap(() => this.websocketService.suspendListener(this.zaakListener)),
           ),
@@ -783,7 +774,10 @@ export class ZaakViewComponent
 
   private openZaakAfsluitenDialog(): void {
     this.actionsSidenav.close();
-    const dialogData = new DialogData(
+    const dialogData = new DialogData<
+      unknown,
+      { toelichting: string; resultaattype: GeneratedType<"RestResultaattype"> }
+    >(
       [
         new SelectFormFieldBuilder()
           .id("resultaattype")
@@ -800,13 +794,9 @@ export class ZaakViewComponent
           .maxlength(80)
           .build(),
       ],
-      (results: any[]) =>
+      ({ toelichting, resultaattype: { id } }) =>
         this.zakenService
-          .afsluiten(
-            this.zaak.uuid,
-            results["toelichting"],
-            results["resultaattype"].id,
-          )
+          .afsluiten(this.zaak.uuid, toelichting, id)
           .pipe(
             tap(() => this.websocketService.suspendListener(this.zaakListener)),
           ),
@@ -867,7 +857,10 @@ export class ZaakViewComponent
       "days",
     );
 
-    const dialogData = new DialogData(
+    const dialogData = new DialogData<
+      unknown,
+      { redenOpschortingField?: string }
+    >(
       [
         new InputFormFieldBuilder()
           .id("redenOpschortingField")
@@ -876,7 +869,7 @@ export class ZaakViewComponent
           .maxlength(200)
           .build(),
       ],
-      (results: any[]) => {
+      ({ redenOpschortingField }) => {
         const duurVerkortingOpschorting: number =
           werkelijkeOpschortDuur - (this.zaakOpschorting?.duurDagen ?? 0);
 
@@ -889,7 +882,7 @@ export class ZaakViewComponent
             )
               .add(duurVerkortingOpschorting, "days")
               .format("YYYY-MM-DD"),
-            redenOpschorting: results["redenOpschortingField"],
+            redenOpschorting: redenOpschortingField,
           };
 
         if (this.zaak.einddatumGepland) {
@@ -1026,7 +1019,7 @@ export class ZaakViewComponent
       taak.status !== TaakStatus.Afgerond &&
       taak.rechten.toekennen &&
       this.loggedInUser.id !== taak.behandelaar?.id &&
-      this.loggedInUser.groupIds.indexOf(taak.groep.id) >= 0
+      (this.loggedInUser.groupIds ?? []).indexOf(taak.groep.id) >= 0
     );
   }
 
@@ -1051,7 +1044,7 @@ export class ZaakViewComponent
     this.websocketService.suspendListener(this.zaakRollenListener);
     this.dialog
       .open(DialogComponent, {
-        data: new DialogData(
+        data: new DialogData<unknown, { reden: string }>(
           [
             new TextareaFormFieldBuilder()
               .id("reden")
@@ -1059,8 +1052,7 @@ export class ZaakViewComponent
               .validators(Validators.required)
               .build(),
           ],
-          (results: any[]) =>
-            this.zakenService.deleteInitiator(this.zaak, results["reden"]),
+          ({ reden }) => this.zakenService.deleteInitiator(this.zaak, reden),
           this.translate.instant("msg.initiator.ontkoppelen.bevestigen"),
         ),
       })
@@ -1103,7 +1095,7 @@ export class ZaakViewComponent
       betrokkene.roltype + " " + betrokkene.identificatie;
     this.dialog
       .open(DialogComponent, {
-        data: new DialogData(
+        data: new DialogData<unknown, { reden: string }>(
           [
             new TextareaFormFieldBuilder()
               .id("reden")
@@ -1111,11 +1103,8 @@ export class ZaakViewComponent
               .validators(Validators.required)
               .build(),
           ],
-          (results: any[]) =>
-            this.zakenService.deleteBetrokkene(
-              betrokkene.rolid,
-              results["reden"],
-            ),
+          ({ reden }) =>
+            this.zakenService.deleteBetrokkene(betrokkene.rolid, reden),
           this.translate.instant("msg.betrokkene.ontkoppelen.bevestigen", {
             betrokkene: betrokkeneIdentificatie,
           }),
@@ -1149,7 +1138,7 @@ export class ZaakViewComponent
       });
   }
 
-  assignTaakToMe(taak: Taak, $event) {
+  assignTaakToMe(taak: Taak, $event: MouseEvent) {
     $event.stopPropagation();
 
     this.websocketService.suspendListener(this.zaakTakenListener);
@@ -1169,6 +1158,7 @@ export class ZaakViewComponent
       this.takenFilter["status"] = "AFGEROND";
     }
 
+    // @ts-expect-error TODO this throwing a ts error, functionality needs to be checked
     this.takenDataSource.filter = this.takenFilter;
     SessionStorageUtil.setItem(
       "toonAfgerondeTaken",
@@ -1245,7 +1235,7 @@ export class ZaakViewComponent
     this.sluitSidenav();
   }
 
-  besluitWijzigen($event): void {
+  besluitWijzigen($event: GeneratedType<"RestDecision">): void {
     this.activeSideAction = "actie.besluit.wijzigen";
     this.teWijzigenBesluit = $event;
     this.actionsSidenav.open();
@@ -1276,7 +1266,9 @@ export class ZaakViewComponent
     });
   }
 
-  betrokkeneGegevensOphalen(betrokkene: ZaakBetrokkene): void {
+  betrokkeneGegevensOphalen(
+    betrokkene: ZaakBetrokkene & { gegevens?: string | null },
+  ): void {
     betrokkene["gegevens"] = "LOADING";
     switch (betrokkene.type) {
       case "NATUURLIJK_PERSOON":
@@ -1320,19 +1312,21 @@ export class ZaakViewComponent
       .label("reden")
       .validators(Validators.required)
       .build();
-    const dialogData = new DialogData([reden], (results: any[]) =>
-      this.bagService
-        .delete(
-          new BAGObjectGegevens(
-            this.zaak.uuid,
-            bagObject,
-            bagObjectGegevens.uuid,
-            results["reden"],
+    const dialogData = new DialogData<unknown, { reden: string }>(
+      [reden],
+      ({ reden }) =>
+        this.bagService
+          .delete(
+            new BAGObjectGegevens(
+              this.zaak.uuid,
+              bagObject,
+              bagObjectGegevens.uuid,
+              reden,
+            ),
+          )
+          .pipe(
+            tap(() => this.websocketService.suspendListener(this.zaakListener)),
           ),
-        )
-        .pipe(
-          tap(() => this.websocketService.suspendListener(this.zaakListener)),
-        ),
     );
 
     dialogData.uitleg = this.translate.instant(
diff --git a/src/main/app/src/app/zaken/zaakdata/zaakdata-form/zaakdata-form.component.ts b/src/main/app/src/app/zaken/zaakdata/zaakdata-form/zaakdata-form.component.ts
index ca8b32c7f0..12087defa6 100644
--- a/src/main/app/src/app/zaken/zaakdata/zaakdata-form/zaakdata-form.component.ts
+++ b/src/main/app/src/app/zaken/zaakdata/zaakdata-form/zaakdata-form.component.ts
@@ -13,11 +13,9 @@ import { FormArray, FormControl, FormGroup } from "@angular/forms";
 })
 export class ZaakdataFormComponent {
   @Input() formItem: any;
-  @Input() label: string;
+  @Input() label?: string;
 
-  constructor() {}
-
-  getType(): "GROUP" | "CONTROL" | "ARRAY" {
+  getType() {
     if (this.formItem instanceof FormControl) {
       return "CONTROL";
     }
diff --git a/src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts b/src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts
index ca4c762173..b9daf99e73 100644
--- a/src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts
+++ b/src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts
@@ -46,14 +46,14 @@ export class ZaakdataComponent implements OnInit {
     });
   }
 
-  buildForm(data: Record<string, any>, formData: FormGroup): FormGroup {
+  buildForm(data: Record<string, unknown>, formData: FormGroup): FormGroup {
     for (const [k, v] of Object.entries(data)) {
       formData.addControl(k, this.getControl(v, this.isProcesVariabele(k)));
     }
     return formData;
   }
 
-  buildArray(values: [], proces: boolean): FormArray {
+  buildArray(values: unknown[], proces: boolean): FormArray {
     if (!values?.length) {
       return this.formBuilder.array([[]]);
     }
@@ -62,15 +62,21 @@ export class ZaakdataComponent implements OnInit {
     );
   }
 
-  getControl(value: any, proces: boolean): AbstractControl {
+  getControl(value: unknown, proces: boolean): AbstractControl {
     if (this.isValue(value)) {
       return new FormControl({ value: value, disabled: proces });
     } else if (this.isFile(value)) {
-      return new FormControl({ value: value["originalName"], disabled: true });
-    } else if (this.isArray(value)) {
+      return new FormControl({
+        value: (value as File)["originalName"],
+        disabled: true,
+      });
+    } else if (Array.isArray(value)) {
       return this.buildArray(value, proces);
     } else if (this.isObject(value)) {
-      return this.buildForm(value, this.formBuilder.group({}));
+      return this.buildForm(
+        value as Record<string, unknown>,
+        this.formBuilder.group({}),
+      );
     }
 
     return new FormControl({ value: value, disabled: proces });
@@ -80,24 +86,24 @@ export class ZaakdataComponent implements OnInit {
     return this.procesVariabelen.includes(key);
   }
 
-  isFile(data?: File): boolean {
+  isFile(data?: unknown) {
     if (!data) {
       return false;
     }
 
-    return "originalName" in data;
-  }
+    if (typeof data !== "object") {
+      return false;
+    }
 
-  isArray(data: unknown): boolean {
-    return Array.isArray(data);
+    return "originalName" in data;
   }
 
-  isObject(data: unknown): boolean {
+  isObject(data: unknown) {
     return typeof data === "object" && !Array.isArray(data) && data !== null;
   }
 
-  isValue(data: unknown): boolean {
-    return !this.isObject(data) && !this.isArray(data);
+  isValue(data: unknown) {
+    return !this.isObject(data) && !Array.isArray(data);
   }
 
   opslaan(): void {
@@ -109,19 +115,22 @@ export class ZaakdataComponent implements OnInit {
     });
   }
 
-  mergeDeep(dest: Record<string, any>, src: Record<string, any>): void {
+  mergeDeep(dest: Record<string, unknown>, src: Record<string, unknown>): void {
     Object.keys(src).forEach((key) => {
       if (key === "__proto__" || key === "constructor") return;
       const destVal = dest[key];
       const srcVal = src[key];
-      if (this.isArray(destVal) && this.isArray(srcVal)) {
+      if (Array.isArray(destVal) && Array.isArray(srcVal)) {
         dest[key] = destVal.concat(...srcVal);
       } else if (
         key in dest &&
         this.isObject(destVal) &&
         this.isObject(srcVal)
       ) {
-        this.mergeDeep(destVal, srcVal);
+        this.mergeDeep(
+          destVal as Record<string, unknown>,
+          srcVal as Record<string, unknown>,
+        );
       } else {
         dest[key] = srcVal;
       }
diff --git a/src/main/app/src/app/zaken/zaken-mijn/zaken-mijn.component.ts b/src/main/app/src/app/zaken/zaken-mijn/zaken-mijn.component.ts
index 3ccb1252b2..9eeb25e9e2 100644
--- a/src/main/app/src/app/zaken/zaken-mijn/zaken-mijn.component.ts
+++ b/src/main/app/src/app/zaken/zaken-mijn/zaken-mijn.component.ts
@@ -11,6 +11,7 @@ import { MatPaginator } from "@angular/material/paginator";
 import { MatSort } from "@angular/material/sort";
 import { MatTable } from "@angular/material/table";
 import { ActivatedRoute } from "@angular/router";
+import moment from "moment";
 import { DateConditionals } from "src/app/shared/utils/date-conditionals";
 import { UtilService } from "../../core/service/util.service";
 import { GebruikersvoorkeurenService } from "../../gebruikersvoorkeuren/gebruikersvoorkeuren.service";
@@ -103,7 +104,7 @@ export class ZakenMijnComponent
     this.table.dataSource = this.dataSource;
   }
 
-  isAfterDate(datum: any): boolean {
+  isAfterDate(datum: Date | moment.Moment | string): boolean {
     return DateConditionals.isExceeded(datum);
   }
 
diff --git a/src/main/app/src/app/zaken/zoek/locatie-zoek/locatie-zoek.component.ts b/src/main/app/src/app/zaken/zoek/locatie-zoek/locatie-zoek.component.ts
index c3792d94c3..f3538b4871 100644
--- a/src/main/app/src/app/zaken/zoek/locatie-zoek/locatie-zoek.component.ts
+++ b/src/main/app/src/app/zaken/zoek/locatie-zoek/locatie-zoek.component.ts
@@ -24,6 +24,7 @@ import * as geom from "ol/geom.js";
 import * as ol from "ol/index.js";
 import * as interaction from "ol/interaction.js";
 import * as layer from "ol/layer.js";
+import BaseLayer from "ol/layer/Base";
 import * as proj from "ol/proj.js";
 import * as source from "ol/source.js";
 import * as style from "ol/style.js";
@@ -75,7 +76,7 @@ export class LocatieZoekComponent implements OnInit, AfterViewInit, OnDestroy {
   // Default Center, middle of the Netherlands
   private readonly DEFAULT_CENTER: number[] = [631711.827985, 6856275.890632];
 
-  private layers: any[];
+  private layers: BaseLayer[] = [];
 
   private defaultStyle: style.Style = new style.Style({
     fill: new style.Fill({
@@ -103,7 +104,7 @@ export class LocatieZoekComponent implements OnInit, AfterViewInit, OnDestroy {
   ngOnInit(): void {
     this.initialLocation = this.currentLocation;
     const projection = proj.get(this.EPSG3857);
-    const projectionExtent = projection.getExtent();
+    const projectionExtent = projection?.getExtent();
     const size = extent.getWidth(projectionExtent) / 256;
     const resolutions = new Array(this.EXTENT_MATRIX);
     const matrixIds = new Array(this.EXTENT_MATRIX);
@@ -203,7 +204,7 @@ export class LocatieZoekComponent implements OnInit, AfterViewInit, OnDestroy {
     this.unsubscribe$.complete();
   }
 
-  private searchAddresses(query): void {
+  private searchAddresses(query: string): void {
     if (query) {
       this.locationService.addressSuggest(query).subscribe((data) => {
         this.searchResults = data.response.docs;
diff --git a/src/main/app/src/app/zoeken/model/zoek-parameters.ts b/src/main/app/src/app/zoeken/model/zoek-parameters.ts
index 166a8b60fc..27d02010c0 100644
--- a/src/main/app/src/app/zoeken/model/zoek-parameters.ts
+++ b/src/main/app/src/app/zoeken/model/zoek-parameters.ts
@@ -27,21 +27,22 @@ export class ZoekParameters implements ZoekFilters {
   rows = 25;
   page = 0;
 
-  static heeftActieveFilters(zoekFilters: any): boolean {
-    console.log(zoekFilters);
+  static heeftActieveFilters(zoekFilters: {
+    zoeken?: Record<string, unknown>;
+    filters?: Record<string, undefined | { values: Array<unknown> }>;
+    datums?: Record<string, DatumRange>;
+  }) {
     if (zoekFilters.zoeken) {
       return Object.values(zoekFilters.zoeken).some(Boolean);
     }
     if (zoekFilters.filters) {
       return Object.values(zoekFilters.filters).some(
-        (filter) => (filter as any)?.values?.length,
+        (filter) => filter?.values?.length,
       );
     }
     if (zoekFilters.datums) {
       return Object.values(zoekFilters.datums).some(
-        (datum) =>
-          (datum as DatumRange).van != null ||
-          (datum as DatumRange).tot != null,
+        ({ van, tot }) => van != null || tot != null,
       );
     }
     return false;
diff --git a/src/main/app/src/app/zoeken/zoek-object/zoek-object-link/zoek-object-link.component.ts b/src/main/app/src/app/zoeken/zoek-object/zoek-object-link/zoek-object-link.component.ts
index 6b446ed5c9..6b92c53fe8 100644
--- a/src/main/app/src/app/zoeken/zoek-object/zoek-object-link/zoek-object-link.component.ts
+++ b/src/main/app/src/app/zoeken/zoek-object/zoek-object-link/zoek-object-link.component.ts
@@ -41,7 +41,7 @@ export class ZoekObjectLinkComponent {
     }
   }
 
-  getLink(): any[] {
+  getLink() {
     switch (this.zoekObject.type) {
       case ZoekObjectType.ZAAK:
         return ["/zaken/", (this.zoekObject as ZaakZoekObject).identificatie];


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR improves type safety and code maintainability by replacing any types with more specific types, refactoring data handling methods, and cleaning up unused imports.  
- Replaces any types in various components and E2E tests with more concrete types.  
- Refactors dialog-related methods to use generic types and destructured parameters for clarity and safety.  
- Removes unused imports and dependencies from several components to reduce clutter.

### Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File                                                                                      | Description                                                              |
|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|
| src/main/app/src/app/zoeken/zoek-object/zoek-object-link.component.ts                      | Removed explicit "any[]" return type from getLink, further type annotation may be considered.  |
| src/main/app/src/app/zoeken/model/zoek-parameters.ts                                       | Replaced any types with Record<string, unknown> in filter functions.      |
| src/main/app/src/app/zaken/zoek/locatie-zoek.component.ts                                  | Improved type annotations (e.g. for query) and added optional chaining.   |
| src/main/app/src/app/zaken/zaken-mijn/zaken-mijn.component.ts                              | Enhanced parameter type for isAfterDate to improve type safety.          |
| src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts                                  | Replaced any types with unknown and improved merging; check the isArray method.  |
| src/main/app/src/app/zaken/zaakdata/zaakdata-form/zaakdata-form.component.ts                | Marked label input as required and simplified getType implementation.     |
| src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts                                 | Applied generic types for DialogData and added parameter types for event handlers. |
| src/main/app/src/app/shared/dialog/dialog-data.ts                                          | Added generic type parameters to the DialogData class.                   |
| src/main/app/src/app/admin/parameter-edit/parameter-edit.component.ts                      | Removed any from the method getBeschikbareMailtemplates for improved type inference. |
| src/e2e/step-definitions/zaak.ts                                                            | Updated function signatures and return types for better type safety.       |
</details>





state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-25T07:55:51Z
user: login: xiduzo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-25T09:10:01Z
user: login: edgarvonk
body: very nice
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-25T09:19:20Z

Review comments:
diff_hunk: @@ -80,24 +86,24 @@ export class ZaakdataComponent implements OnInit {
     return this.procesVariabelen.includes(key);
   }
 
-  isFile(data?: File): boolean {
+  isFile(data?: unknown) {
     if (!data) {
       return false;
     }
 
-    return "originalName" in data;
-  }
+    if (typeof data !== "object") {
+      return false;
+    }
 
-  isArray(data: unknown): boolean {
-    return Array.isArray(data);
+    return "originalName" in data;
path: src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts
user: login: Copilot
body: The isArray method incorrectly checks for the property 'originalName' instead of verifying if the data is an array. Consider replacing this with Array.isArray(data) to properly determine array types.
```suggestion
    return data instanceof File;
```
created_at: 2025-04-25T07:55:51Z
author_association: CONTRIBUTOR
diff_hunk: @@ -80,24 +86,24 @@ export class ZaakdataComponent implements OnInit {
     return this.procesVariabelen.includes(key);
   }
 
-  isFile(data?: File): boolean {
+  isFile(data?: unknown) {
     if (!data) {
       return false;
     }
 
-    return "originalName" in data;
-  }
+    if (typeof data !== "object") {
+      return false;
+    }
 
-  isArray(data: unknown): boolean {
-    return Array.isArray(data);
+    return "originalName" in data;
path: src/main/app/src/app/zaken/zaakdata/zaakdata.component.ts
user: login: xiduzo
body: not sure if it is an instance of, or just and object containing the data 🤔 
created_at: 2025-04-25T09:10:01Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-04-25T09:17:47Z
body: ## unit-test-results
 90 files  ±0  133 suites  ±0   1m 59s ⏱️ +2s
549 tests ±0  548 ✅ ±0  1 💤 ±0  0 ❌ ±0 
674 runs  ±0  672 ✅ ±0  2 💤 ±0  0 ❌ ±0 

Results for commit aa8b3ece. ± Comparison against base commit 1fe6d428.

[test-results]:data:application/gzip;base64,H4sIALFVC2gC/03MTQ7CIBCG4as0rF3wU4F6GTMdICG2xVBYGe8uYMUu32cy34s4v9id3IaJXgayZ59aMSFKmhwh+bBVYFOBckz1fB173feM2Ej/6eGf9aeDA78UoB1sjCEeEvNWN6Uaj/hNSsW7fBd7nwZbn/cwrKtPJQiAnoVFCzNaJqWxzDgmDKCiRgFq7rjmUkny/gDvcylhCAEAAA==

:recycle: This comment has been updated with latest results.
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-04-25T09:32:11Z
body: ## integration-test-results
 35 files  ±0   35 suites  ±0   41s ⏱️ -1s
126 tests ±0  126 ✅ ±0  0 💤 ±0  0 ❌ ±0 
142 runs  ±0  142 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit aa8b3ece. ± Comparison against base commit 1fe6d428.

[test-results]:data:application/gzip;base64,H4sIAJlWC2gC/13MSw7CIBSF4a00jB0UWoG4GXN7uSTEthgeo8a9i6S26PD7T3I2Zt1Mkd264XrpWMwunTI5QHJ+LR55cZnSZ+RCfnWPGfE/PdyzpP4IFtz8EygEH/YS8lo/R7HjuGzK+VjdHFa3f+iXxaUCBqCngZBgQuJSGuLG8sEAqt4oQC2s0EIqyV5vJdvFOAYBAAA=

author_association: CONTRIBUTOR
user: login: codecov[bot]
created_at: 2025-04-25T09:32:36Z
body: ## [Codecov](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) Report
Attention: Patch coverage is `13.46154%` with `45 lines` in your changes missing coverage. Please review.
> Project coverage is 44.59%. Comparing base [(`1fe6d42`)](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/commit/1fe6d428d3e26352f7a7598c5e3394d118d37100?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) to head [(`aa8b3ec`)](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/commit/aa8b3eceabce166de1df13dac70d7ac82f282676?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl).
> Report is 1 commits behind head on main.

:white_check_mark: All tests successful. No failed tests found.

| [Files with missing lines](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | Patch % | Lines |
|---|---|---|
| [...app/src/app/zaken/zaak-view/zaak-view.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzaken%2Fzaak-view%2Fzaak-view.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvemFrZW4vemFhay12aWV3L3phYWstdmlldy5jb21wb25lbnQudHM=) | 27.27% | [16 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [...n/app/src/app/zaken/zaakdata/zaakdata.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzaken%2Fzaakdata%2Fzaakdata.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvemFrZW4vemFha2RhdGEvemFha2RhdGEuY29tcG9uZW50LnRz) | 0.00% | [16 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [src/main/app/src/app/shared/dialog/dialog-data.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fshared%2Fdialog%2Fdialog-data.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvc2hhcmVkL2RpYWxvZy9kaWFsb2ctZGF0YS50cw==) | 25.00% | [3 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [.../zaken/zoek/locatie-zoek/locatie-zoek.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzaken%2Fzoek%2Flocatie-zoek%2Flocatie-zoek.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvemFrZW4vem9lay9sb2NhdGllLXpvZWsvbG9jYXRpZS16b2VrLmNvbXBvbmVudC50cw==) | 0.00% | [3 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [...c/main/app/src/app/zoeken/model/zoek-parameters.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzoeken%2Fmodel%2Fzoek-parameters.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvem9la2VuL21vZGVsL3pvZWstcGFyYW1ldGVycy50cw==) | 0.00% | [3 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [...p/admin/parameter-edit/parameter-edit.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fadmin%2Fparameter-edit%2Fparameter-edit.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvYWRtaW4vcGFyYW1ldGVyLWVkaXQvcGFyYW1ldGVyLWVkaXQuY29tcG9uZW50LnRz) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [.../zaakdata/zaakdata-form/zaakdata-form.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzaken%2Fzaakdata%2Fzaakdata-form%2Fzaakdata-form.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvemFrZW4vemFha2RhdGEvemFha2RhdGEtZm9ybS96YWFrZGF0YS1mb3JtLmNvbXBvbmVudC50cw==) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [...p/src/app/zaken/zaken-mijn/zaken-mijn.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzaken%2Fzaken-mijn%2Fzaken-mijn.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvemFrZW4vemFrZW4tbWlqbi96YWtlbi1taWpuLmNvbXBvbmVudC50cw==) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [...ect/zoek-object-link/zoek-object-link.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzoeken%2Fzoek-object%2Fzoek-object-link%2Fzoek-object-link.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvem9la2VuL3pvZWstb2JqZWN0L3pvZWstb2JqZWN0LWxpbmsvem9lay1vYmplY3QtbGluay5jb21wb25lbnQudHM=) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |

<details><summary>Additional details and impacted files</summary>


```diff
@@             Coverage Diff              @@
##               main    #3176      +/-   ##
============================================
- Coverage     44.59%   44.59%   -0.01%     
  Complexity     3622     3622              
============================================
  Files          1347     1347              
  Lines         32620    32613       -7     
  Branches       3136     3066      -70     
============================================
- Hits          14548    14543       -5     
- Misses        16860    17245     +385     
+ Partials       1212      825     -387     
```

| [Flag](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | Coverage Δ | |
|---|---|---|
| [integrationtests](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | `52.49% <ø> (ø)` | |
| [unittests](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | `30.45% <13.46%> (-0.01%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#carryforward-flags-in-the-pull-request-comment) to find out more.

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3176?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
author_association: NONE