Da sempre, JavaScript offre la possibilità di aggiungere funzioni al prototype di una classe così che ogni istanza di questa classe possa beneficiare di queste funzioni. Anche altri linguaggi più strutturati come C# e Java offrono questa funzionalità. TypeScript ovviamente offre questa funzionalità (definita Module Augmentation), ma è necessario fare un passagio in più in quanto da TypeScript non siamo a conoscenza dei metodi aggiunti tramite JavaScript. Prendiamo il seguente codice.
declare global { interface Array<T> { distinct<K>(): K[]; } } Array.prototype.distinct = function<K>() { return <K[]>(this.filter((value, index, self) => self.indexOf(value) === index)); };
Il primo step è quello di dichiarare un modulo global (quello a cui in TypeScript sono collegate tutte le classi di default di JavaScript) all'interno del quale dichiariamo che l'interfaccia Array ha un nuovo metodo chiamato Distinct. Il secondo step è quello di aggiungre al prototype della classe Array la funzione esattamente come facciamo con JavaScript nativo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Reactive form tipizzati con FormBuilder in Angular
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Miglioramenti agli screen reader e al contrasto in Angular
Paginare i risultati con QuickGrid in Blazor
Implementare il throttling in ASP.NET Core
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Copiare automaticamente le secret tra più repository di GitHub
Eseguire una GroupBy per entity in Entity Framework
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Controllare gli accessi IP alle app con Azure Container Apps