Javascript 验证对象分解

Javascript 验证对象分解,javascript,eslint,jsdoc,ecmascript-2020,Javascript,Eslint,Jsdoc,Ecmascript 2020,假设我们有两个函数 /** * @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, a

假设我们有两个函数

/**
 * @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]});
}
有没有可能以某种方式强调这种错误?我试着在埃斯林特身上找到些东西,但没找到


谢谢

您只需在文件开头添加
/@ts check
,而无需eslint。
然后,您可以看到您的
foo
有红线。
但是,您需要以这种方式将其添加到每个文件中。
更多详细信息请参见vscode


我看不出有什么问题,您可以从request0中销毁值,这是一个已解决的承诺,其中包含那些依赖于编辑器的JSDoc支持级别的属性。类似于TypeScript的静态类型检查器也会捕获它。@asafel request0返回id和属性,并通过jsdoc注释记录。它不会返回fooproperty@str是的,有点像打字脚本,但是有jsdoc。它可以用于访问普通对象的属性,但在解构情况下不起作用-有一个VSCode插件,它将突出显示。intelij idea也支持这种检查
(async function () {
  const { foo } = await request0(); // but it doesn't return foo, it returns id and attributes
  console.log(foo);
})();