Typescript: Skrip ketikan salah mengeluarkan jenis metadata 'Objek' alih-alih 'String' untuk jenis literal string

Dibuat pada 9 Sep 2016  ·  1Komentar  ·  Sumber: microsoft/TypeScript

Versi TypeScript: 2.0.2.0 beta

Kode

function PropDeco(target: Object, propKey: string | symbol) { }

class Foo {
    <strong i="9">@PropDeco</strong>
    public foo: "foo" | "bar";
}
--experimentalDecorators  --emitDecoratorMetadata

Perilaku yang diharapkan:

Karena jenis runtime Foo.foo adalah String , saya yakin kompilator harus mengeluarkan definisi metadata berikut:

__metadata('design:type', String)

Kode lengkap:

function PropDeco(target, propKey) { }
var Foo = (function () {
    function Foo() {
    }
    __decorate([
        PropDeco, 
        __metadata('design:type', String)
    ], Foo.prototype, "foo", void 0);
    return Foo;
}());

Perilaku sebenarnya:

Namun, alih-alih String , kompilator memancarkan Object sebagai jenis Foo.foo terdeteksi:

__metadata('design:type', Object)

Kode lengkap:

function PropDeco(target, propKey) { }
var Foo = (function () {
    function Foo() {
    }
    __decorate([
        PropDeco, 
        __metadata('design:type', Object)
    ], Foo.prototype, "foo", void 0);
    return Foo;
}());

Saya yakin ini tidak benar.

Bug Fixed

Komentar yang paling membantu

Kita harus melakukan ini untuk semua tipe literal, termasuk boolean, enum, number, dan string.

>Semua komentar

Kita harus melakukan ini untuk semua tipe literal, termasuk boolean, enum, number, dan string.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat