إصدار TypeScript: 2.0.2.0 بيتا
شفرة
function PropDeco(target: Object, propKey: string | symbol) { }
class Foo {
<strong i="9">@PropDeco</strong>
public foo: "foo" | "bar";
}
--experimentalDecorators --emitDecoratorMetadata
سلوك متوقع:
نظرًا لأن نوع وقت التشغيل Foo.foo
هو String
، أعتقد أن المترجم يجب أن يرسل تعريف البيانات الوصفية التالي:
__metadata('design:type', String)
الكود الكامل:
function PropDeco(target, propKey) { }
var Foo = (function () {
function Foo() {
}
__decorate([
PropDeco,
__metadata('design:type', String)
], Foo.prototype, "foo", void 0);
return Foo;
}());
السلوك الفعلي:
ومع ذلك ، بدلاً من String
، يقوم المترجم بإصدار Object
كنوع Foo.foo
:
__metadata('design:type', Object)
الكود الكامل:
function PropDeco(target, propKey) { }
var Foo = (function () {
function Foo() {
}
__decorate([
PropDeco,
__metadata('design:type', Object)
], Foo.prototype, "foo", void 0);
return Foo;
}());
وأعتقد أن هذا غير صحيح.
يجب أن نفعل هذا لجميع الأنواع الحرفية ، بما في ذلك منطقية ، تعداد ، رقم ، وسلسلة.
التعليق الأكثر فائدة
يجب أن نفعل هذا لجميع الأنواع الحرفية ، بما في ذلك منطقية ، تعداد ، رقم ، وسلسلة.