Typescript: Modul eksternal dengan AMD selalu membutuhkan "ekspor" meskipun tidak digunakan

Dibuat pada 13 Sep 2014  ·  6Komentar  ·  Sumber: microsoft/TypeScript

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?

Suggestion help wanted

Komentar yang paling membantu

Semua 6 komentar

Sepertinya proposal yang masuk akal

Disetujui

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.

https://github.com/mehdishojaei/amdextract

Apakah halaman ini membantu?
0 / 5 - 0 peringkat