如何将 jsdoc 类型添加到解构变量中? (VSCode)

问题描述 投票:0回答:2

所以我有一个带有数据属性的响应对象。 对于本示例,其数据是文本类型。 我想要数据属性,并且希望 VSCode 能够识别它的类型,这样我就可以获得一些 IntelliSense 的喜爱。

const response = await someRequest();
const {data} = response;

我首先尝试:

const response = await someRequest();

/** @type {string} */
const {data} = response;

不,所以我尝试:

const response = await someRequest();

const {
  /** @type {string} */
  data,
} = response;

这也不起作用。

然后我尝试:

/**
 * @typedef {Object} Response
 * @property {string} data
 */

/** @type {Response} */
const response = await someRequest();

const { data } = response;

成功了!

我不确定它有多大区别,但我正在使用 VSCode 2020 年 9 月(版本 1.50)。

编辑:我改变了问题的结束方式,因为事实证明我的最后一个例子确实有效......

javascript visual-studio-code jsdoc
2个回答
2
投票
/**
 * @typedef {Object} Response
 * @property {string} data
 */

/** @type {Response} */
const response = await someRequest();

const { data } = response;

我认为这不起作用,但它确实有效,所以我将其标记为答案。

感谢 Dolly 的评论:如何使用 jsdoc 记录解构变量。 虽然不完全合适,但它确实回答了我的问题。


0
投票

jsdoc的简单方法如下:

/** @type {{data:string}} */
const response = await someRequest();
const {data} = response;

如果您可以控制 someRequest 函数,那就更好了,就像这样对其进行 jsdoc :

/** @returns {Promise<{data:string}>} */
async function someRequest() {
  return {data: ""}
}

const response = await someRequest();
const {data} = response;

最后,为了完整起见,您可以将其内联到几个位置。这是一个例子:

const {data} = /** @type {{data:string}} */ (await someRequest()) || {};
© www.soinside.com 2019 - 2024. All rights reserved.