【问题标题】:validate object destructuring验证对象解构
【发布时间】:2021-03-26 22:15:33
【问题描述】:

假设我们有两个函数

/**
 * @typedef MyResponse
 * @property {Number} id - my awesome id
 * @property {Array<Number>} attributes - list of ids
 * */

/**
 * @return {Promise<MyResponse>}
 * */
function request0() {
  return Promise.resolve({id: 1, attributes: [1,2,3]});
}

(async function () {
  const { foo } = await request0(); // but it doesn't return foo, it returns id and attributes
  console.log(foo);
})();

是否可以以某种方式突出显示此类错误?我试图在 eslint 上找到一些东西,但没有运气。

谢谢

【问题讨论】:

  • 我在这里没有看到问题,你破坏了 request0 的值,这是一个包含这些道具的已解决承诺
  • 这取决于您的编辑器的 JSDoc 支持级别。像 TypeScript 这样的静态类型检查器也会捕获它。
  • @asafel request0 返回 id 和属性,并通过 jsdoc 注释记录。它不返回 foo 属性
  • @str 是的,一种打字稿,但带有 jsdoc。它可以用于访问普通对象的属性,但它不适用于解构大小写
  • marketplace.visualstudio.com/… - 有一个 VSCode 插件,会高亮显示。

标签: javascript eslint jsdoc ecmascript-2020


【解决方案1】:

您可以简单地在文件开头添加// @ts-check 而无需使用 eslint。
然后,您会看到您的foo 有红线。
但是,您需要以这种方式将其添加到每个文件中。
更多细节在Type checking JavaScript 中使用 vscode。

【讨论】:

猜你喜欢
  • 2018-06-23
  • 2017-12-17
  • 2017-07-18
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多