Typescript: Typescript为字符串文字类型错误地发出元数据类型“ Object”而不是“ String”

创建于 2016-09-09  ·  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;
}());

实际行为:

但是,编译器将发出Object作为检测到的Foo.foo类型,而不是String 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 等级