TypeScript menghapus duplikat extends
Saya memecah aplikasi TypeScript saya menjadi beberapa file, biasanya satu untuk setiap kelas. Ketika saya merilis aplikasi saya, saya menggabungkan dan meminimalkan mereka menjadi satu file. Masalah yang saya hadapi adalah bahwa fungsi __extends yang dihasilkan TypeScript dimasukkan ke dalam setiap file JavaScript yang dikompilasi. Jadi saya akhirnya memiliki beberapa salinan kode yang sama dalam produk akhir.
Apakah ada cara untuk memberitahu compiler agar hanya menempatkan fungsi __extends di satu file JavaScript? Apakah ada solusi lain?
Jawaban #1
Salah satu solusinya adalah menggabungkan hasil keluaran menjadi satu file melalui compiler TypeScript:
tsc --out final.js app.ts
Anda kemudian bisa meminifikasi final.js, yang seharusnya hanya memiliki satu fungsi extends.
Jawaban #2
Opsi untuk menggabungkan output ke dalam file sangat bagus, tetapi tidak didukung di semua versi dan semua versi modul.
Untuk mengatasinya, Anda dapat menggunakan opsi compiler noEmitHelpers untuk menghapus fungsi bantuan dan menulis sendiri di file terpisah.
Anda harus membuat file baru emitHelperFile.js yang akan berisi fungsi 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 __());
};
Dan hilangkan itu dari output yang dihasilkan oleh compiler
tsc app.ts --noEmitHelpers
Anda dapat memeriksa lebih banyak opsi compiler di sini https://www.typescriptlang.org/docs/handbook/compiler-options.html
