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
Sfruttare al massimo i topic space di Event Grid MQTT
Cambiare la chiave di partizionamento di Azure Cosmos DB
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Gestire liste di tipi semplici con Entity Framework Core
Usare le collection expression per inizializzare una lista di oggetti in C#
Utilizzare il trigger SQL con le Azure Function
Creare un'applicazione React e configurare Tailwind CSS
Utilizzare gRPC su App Service di Azure
Utilizzare Copilot con Azure Cosmos DB
Effettuare il refresh dei dati di una QuickGrid di Blazor
Evitare il flickering dei componenti nel prerender di Blazor 8
Generare un hash con SHA-3 in .NET