Typescript - 当在对象内部保留注释时,代码以奇怪的方式编译

时间:2013-01-07 22:14:13

标签: typescript

我有这样的打字稿文件......

var obj = {
    /** Test comment */
    prop1: '',
    prop2: ''
};

javascript编译为......

var obj = {
    prop1: /** Test comment */
    '',
    prop2: ''
};

这个问题是JSDoc在生成文档时没有看到对象的属性,因为注释位于属性之后。

我的解决方案是......

    var obj;
    obj = {};

    /** Test comment */
    obj.prop1 = '';

    obj.prop2 = '';

出于某些原因,在这种情况下,我必须将声明与初始化分开,否则类型脚本会在obj.propX = '';行上引发错误

  

属性'propX'在类型'{}'

的值上不存在

我的问题:

  1. 是否有其他人因对象中的评论位置而遇到此问题?
  2. 如果是这样的话,如果与我自己的解决方案不同,你是如何解决它的呢?
  3. 如果没有,有什么办法可以阻止错误的发生,所以我可以把变量声明和初始化结合起来。

1 个答案:

答案 0 :(得分:6)

这是一个错误。在将来的TypeScript版本中,将正确保留注释。

与此同时,对于解决方法,您有两种选择:

无论

var obj: any = {}; // No type checking, anywhere, on obj

或者

var obj: { prop1: string; prop2: string; } = {}; // More work, but type checking will happen now

之后你可以这样做,它应该按预期工作:

/** Test comment */
obj.prop1 = '';