Typescript: تُرسل أداة الكتابة بشكل غير صحيح نوع البيانات الوصفية "كائن" بدلاً من "سلسلة" لأنواع السلاسل الحرفية

تم إنشاؤها على ٩ سبتمبر ٢٠١٦  ·  1تعليق  ·  مصدر: microsoft/TypeScript

إصدار 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;
}());

وأعتقد أن هذا غير صحيح.

Bug Fixed

التعليق الأكثر فائدة

يجب أن نفعل هذا لجميع الأنواع الحرفية ، بما في ذلك منطقية ، تعداد ، رقم ، وسلسلة.

>كل التعليقات

يجب أن نفعل هذا لجميع الأنواع الحرفية ، بما في ذلك منطقية ، تعداد ، رقم ، وسلسلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

siddjain picture siddjain  ·  3تعليقات

seanzer picture seanzer  ·  3تعليقات

blendsdk picture blendsdk  ·  3تعليقات

manekinekko picture manekinekko  ·  3تعليقات

bgrieder picture bgrieder  ·  3تعليقات