【问题标题】:JSDoc: declare @type for variable in "for...of" loopJSDoc:在“for...of”循环中为变量声明@type
【发布时间】:2017-12-17 17:24:10
【问题描述】:

我可以使用 JSDoc @type 注释为变量 one 声明类型吗?

/** @type some.type */
for (let one of many) {
    ...
}

类似 PHPDoc 注释的东西:

/** @var \Some\Type $one */
foreach ($many as $one) {

}

【问题讨论】:

  • 我认为我通常不会期望函数内部有类型声明。您不会查看创建 many 的文档吗?
  • @loganfsmyth ,我在代码的任何位置使用 PHPDoc @var 注释来注释任何变量的类型。我可以对 JSDoc 做同样的事情吗?

标签: javascript types ecmascript-6 annotations jsdoc


【解决方案1】:

是的,你可以。您只需将类型声明移到括号内的变量之前:

for (/** @type {SomeType} */ const one of many) {
    // ...
}

这很好用,尽管我通常更喜欢指定many 的类型。例如:

/** @type {Number[]} */
const many = [1, 2, 3, 4];

然后会自动推断one的类型。

P.S.:注意我将 one 声明为 const。不管人们可能猜到什么,您都可以将for..of 循环变量声明为常量!

【讨论】:

  • 我有以下forfor(/** @type {string} */ let event of JSON.parse(msg))event 仍然是 any 而不是 string,所以这种方法似乎不起作用(至少每次都如此)。我尝试将string[] 用于JSON.parse(msg),但event 仍然是any
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
相关资源
最近更新 更多