Typescript: O typescript emite incorretamente o tipo de metadados 'Object' em vez de 'String' para tipos literais de string

Criado em 9 set. 2016  ·  1Comentário  ·  Fonte: microsoft/TypeScript

Versão TypeScript: 2.0.2.0 beta

Código

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

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

Comportamento esperado:

Como o tipo de tempo de execução de Foo.foo é String , acredito que o compilador deve emitir a seguinte definição de metadados:

__metadata('design:type', String)

Código completo:

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

Comportamento real:

No entanto, em vez de String , o compilador emite Object como o tipo detectado de Foo.foo :

__metadata('design:type', Object)

Código completo:

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

Eu acredito que isso está incorreto.

Bug Fixed

Comentários muito úteis

Devemos fazer isso para todos os tipos literais, incluindo booleano, enum, número e string.

>Todos os comentários

Devemos fazer isso para todos os tipos literais, incluindo booleano, enum, número e string.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

blendsdk picture blendsdk  ·  3Comentários

dlaberge picture dlaberge  ·  3Comentários

siddjain picture siddjain  ·  3Comentários

weswigham picture weswigham  ·  3Comentários

Antony-Jones picture Antony-Jones  ·  3Comentários