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.
Kita harus melakukan ini untuk semua tipe literal, termasuk boolean, enum, number, dan string.
Komentar yang paling membantu
Kita harus melakukan ini untuk semua tipe literal, termasuk boolean, enum, number, dan string.