3

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

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. 如果没有,我能做些什么来阻止错误的发生,这样我就可以将变量声明和初始化结合起来。
4

1 回答 1

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 = '';
于 2013-01-07T23:38:52.617 回答