TypeScript uklanjanje duplikata extends
Ja razdvajam svoje TypeScript aplikacije u više datoteka, obično po jednu za svaku klasu. Kada objavim svoju aplikaciju, spajam ih i minimiziram u jednu datoteku. Problem koji imam je što se TypeScript generirana funkcija __extends stavlja u svaku kompiliranu JavaScript datoteku. Tako završi s više kopija istog koda u konačnom proizvodu.
Postoji li način da se kompajleru kaže da funkciju __extends stavi samo u jednu JavaScript datoteku? Postoji li neko drugo rješenje?
Odgovor #1
Jedno rješenje bilo bi spojiti izlaz u jednu datoteku putem TypeScript kompajlera:
tsc --out final.js app.ts
Tada biste mogli minimizirati final.js, koji bi trebao imati samo jednu extends funkciju.
Odgovor #2
Opcija kombiniranja izlaza u datoteku je izvrsna, ali nije podržana u svim verzijama i svim verzijama modula.
Kako biste to zaobišli, možete koristiti opciju kompajlera noEmitHelpers kako biste uklonili pomoćnu funkciju i napisali vlastitu u zasebnoj datoteci.
Trebali biste stvoriti novu datoteku emitHelperFile.js koja će sadržavati funkciju extend.
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
I izostavite ga iz generiranog izlaza kompajlera
tsc app.ts --noEmitHelpers
Više opcija kompajlera možete provjeriti ovdje https://www.typescriptlang.org/docs/handbook/compiler-options.html
