Berikut adalah modul eksternal kecil yang secara eksplisit mengekspor modul:
module Foo {
export var foo = 42;
}
export = Foo;
Kode yang dihasilkan untuk ini adalah:
define(["require", "exports"], function(require, exports) {
var Foo;
(function (Foo) {
Foo.foo = 42;
})(Foo || (Foo = {}));
return Foo;
});
Ini terasa seperti AMD yang buruk karena Anda memerlukan ketergantungan ajaib "ekspor", tetapi kemudian tidak menggunakannya dan malah mengembalikan Foo secara langsung.
Ini menjengkelkan bagi pemuat AMD minimal karena mereka tidak dapat menganggap objek yang dikembalikan modul Anda adalah objek "ekspor" Anda dan harus menebak bahwa Anda benar-benar bermaksud mengembalikan sesuatu yang mengesampingkan objek "ekspor" yang Anda minta.
Selanjutnya, mengapa repot-repot mendeklarasikan ketergantungan pada 'require' ketika tidak digunakan?
Sepertinya proposal yang masuk akal
Disetujui
SO pertanyaan yang saya tanyakan tentang ini: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies
Apakah ini sudah diterapkan? Saya membutuhkannya...
@amandaol tag pada masalah ini menunjukkan bahwa terserah komunitas untuk menerapkannya. Ditambah dengan masih terbuka artinya belum diimplementasikan.
Untuk apa nilainya, kami sekarang menggunakan amdextract
di pipeline build kami setelah tsc
untuk menghapus require
dan exports
dari JS yang dipancarkan.
Komentar yang paling membantu
SO pertanyaan yang saya tanyakan tentang ini: https://stackoverflow.com/questions/44836084/omit-require-and-exports-from-typescript-emitted-amd-dependencies