Utilitat TypeScript per a Formularis Angular amb Tipatge Segur

Genera formularis tipats a Angular a partir d'interfícies: FormGroup, FormControl i FormArray, suportant arrays, dates, objectes niats i null després de reset.

sábado, 16 de agosto de 2025 • 3 min de lectura • Equip Q2BSTUDIO

Intel·ligència-Artificial-

Presentem una utilitat TypeScript per a formularis Angular que permet mantenir el tipatge fort i la coherència amb les interfícies de dades en projectes full stack TypeScript. La idea és aprofitar un únic conjunt d'interfícies com a base per a models de base de dades, serveis, DTOs i components d'interfície d'usuari, i generar controls de formulari tipats que reflecteixin aquestes interfícies.

Descripció general del tipus GForm i comportament esperat: export type GForm<IInterface> = FormGroup<{ [Key in keyof IInterface]: IInterface[Key] extends Array<infer ArrayItem> ? FormArray<GForm<ArrayItem>> | FormControl<ArrayItem[]> : IInterface[Key] extends Date ? FormControl<Date | null> : IInterface[Key] extends object ? GForm<IInterface[Key]> | null | FormControl<IInterface[Key] | null> : FormControl<IInterface[Key] | null> }> Aquest tipus mapeja cada propietat de la interfície a un FormControl, FormGroup o FormArray segons correspongui, suportant arrays, dates, objectes niats i valors null que poden aparèixer després de restablir el formulari.

Exemple d'ús simplificat: export interface ICar { brand: string, model: string } const formCar: GForm<ICar> = new FormGroup({ brand: new FormControl<string>('', [Validators.required, Validators.minLength(2)]), model: new FormControl<string>('', [Validators.required, Validators.minLength(2)]) }); export interface IDrivingLicence { fullname: string; car: ICar } const formLicence = new FormGroup({ fullname: new FormControl<string>(''), car: new FormControl<ICar>(defaultCar, { nonNullable: true }) }) as GForm<IDrivingLicence>

Pregunta freqüent sobre existència d'utilitats oficials: Angular ha anat millorant el tipatge de formularis reactius en versions recents i ofereix generics en FormControl i FormGroup. Tanmateix no existeix una utilitat integrada oficial que converteixi automàticament una interfície arbitrària en una estructura completa de FormGroup amb regles especials per a arrays, dates i objectes niats de la manera descrita aquí. Existeixen llibreries i solucions comunitàries que aborden el tipatge i el mapeig de formularis, i és habitual implementar utilitats pròpies per cobrir casos molt específics de cada domini.

Suggeriments per millorar la utilitat: implementar una funció recursiva que construeixi el FormGroup a partir de la interfície i els seus valors per defecte; gestionar claus opcionals separant propietats required de optional; afegir suport explícit per a arrays de tipus primitius i arrays d'objectes; utilitzar utilitats de TypeScript com NonNullable i Exclude per afinar la nullabilitat; aprofitar FormBuilder amb signatures tipades per simplificar la creació de controls; i afegir tests que validin conversions en casos complexos com unions de tipus i tipus recursius.

Notes importants: El tipus null s'inclou perquè els controls poden passar a ser null després de reset; es poden utilitzar validadors per rebutjar nulls quan correspongui; FormControl<T | null> és útil quan es gestiona un objecte complex mitjançant un control personalitzat en lloc d'un FormGroup niats; revisar versions d'Angular per aprofitar millores de tipatge en formularis reactius.

Sobre Q2BSTUDIO: Q2BSTUDIO és una empresa de desenvolupament de programari i aplicacions a mida especialitzada en solucions empresarials. Oferim programari a mida, desenvolupament d'aplicacions a mida, consultoria en intel·ligència artificial, implementació d'agents IA per a empreses, serveis de ciberseguretat, serveis cloud aws i azure, i projectes d'intel·ligència de negoci amb Power BI. Dissenyem solucions integrals que combinen arquitectura al núvol, analítica avançada i automatització IA per resoldre reptes concrets de negoci.

Si busques millorar la qualitat del codi i la seguretat dels teus formularis a Angular o necessites desenvolupar una plataforma amb integració d'intel·ligència artificial i serveis cloud, a Q2BSTUDIO podem ajudar-te amb serveis de programari a mida, aplicacions a mida, models d'intel·ligència artificial, ciberseguretat gestionada, serveis cloud aws i azure, intel·ligència de negoci, IA per a empreses, agents IA i power bi. Contacta amb nosaltres per a una consultoria i una prova de concepte adaptada a les teves necessitats.

Si vols que revisem el teu snippet i et proposem una versió estesa que cobreixi més casos concrets, puc ajudar-te a convertir aquesta utilitat en una fàbrica de formularis tipada, afegir gestió de propietats opcionals, i proposar patrons per a integració amb validadors asíncrons i serveis de backend.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.