Typescript: Typescript неправильно выдает тип метаданных Object вместо String для строковых литералов

Созданный на 9 сент. 2016  ·  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 рейтинги