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 modellazione del FormBuilder in Angular
Come migrare da una form non tipizzata a una form tipizzata in Angular
Generare un hash con SHA-3 in .NET
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Utilizzare i primary constructor di C# per inizializzare le proprietà
Ottenere un token di accesso per una GitHub App
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Limitare le richieste lato server con l'interactive routing di Blazor 8
Code scanning e advanced security con Azure DevOps
Utilizzare i primary constructor in C#
Miglioramenti nell'accessibilità con Angular CDK
Ordine e importanza per @layer in CSS
I più letti di oggi
- Utilizzare AAD su SQL Database durante lo sviluppo con Visual Studio
- Utilizzare il TransferControl in Windows Phone
- Gestione dei token negli input di testo con la Universal Windows Platform
- Dare temporaneamente accesso ad un blob di Azure Storage
- Impostare le policy CORS con Azure API Management
- Utilizzare database e servizi con gli add-on di Container App
- Utilizzare HttpModule in modalità asincrona
- Indicizzare i Blob Storage con Azure Search
- Creazione di StateTrigger personalizzati in Universal Windows Platform
- Modificare i criteri della clausola Where del LinqDataSource di ASP.NET