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

Bri*_*gel 3 typescript

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

var obj = {
    /** Test comment */
    prop1: '',
    prop2: ''
};
Run Code Online (Sandbox Code Playgroud)

并且javascript编译成这个......

var obj = {
    prop1: /** Test comment */
    '',
    prop2: ''
};
Run Code Online (Sandbox Code Playgroud)

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

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

    var obj;
    obj = {};

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

    obj.prop2 = '';
Run Code Online (Sandbox Code Playgroud)

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

属性'propX'在类型'{}'的值上不存在

我的问题:

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

Rya*_*ugh 6

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

在此期间,对于解决方法,您有两种选择:

var obj: any = {}; // No type checking, anywhere, on obj
Run Code Online (Sandbox Code Playgroud)

要么

var obj: { prop1: string; prop2: string; } = {}; // More work, but type checking will happen now
Run Code Online (Sandbox Code Playgroud)

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

/** Test comment */
obj.prop1 = '';
Run Code Online (Sandbox Code Playgroud)