Estendere la classe Array di JavaScript con TypeScript

di , in HTML5, JavaScript,

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

Visualizza/aggiungi commenti

Estendere la classe Array di JavaScript con TypeScript (#252) 1010 2
| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi