jsdoc中如何获取函数的返回类型?

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

我有两个文件

src/a.js
src/b.js
。我希望
response
的类型是
request
函数的返回值。

如果用 Typescript 我可以写这个⬇️。jsdoc 中有类似的语法吗?

我不想使用

@typedef
来定义附加类型。

// src/a.ts

export function request() {
  return Promise.resolve({
    name: "William",
  });
}


// src/b.ts

import { request } from "./a";

export function handleResponse(response: ReturnType<typeof request>) {}

src/a.js

export function request() {
  return Promise.resolve({
    name: "William",
  });
}

src/b.js

/**
 * @param {???} response
 * @returns {void}
 */
export function handleResponse(response) {}

javascript typescript jsdoc
1个回答
0
投票

要在 JSDoc 中获得类似的效果而不使用 @typedef,您可以在 JSDoc 注释中使用 import() 语法来引用另一个模块中的类型。

在您的示例中,如果您想使用

src/a.js
中的请求函数的返回类型作为
src/b.js
中handleResponse函数中的响应参数,您可以执行以下操作

src/a.js

/**
 * @returns {Promise<{name: string}>}
 */
export function request() {
  return Promise.resolve({
    name: "William",
  });
}

src/b.js

import { request } from './a';

/**
 * @param {ReturnType<typeof import('./a').request>} response
 * @returns {void}
 */
export function handleResponse(response) {}

在 JSDoc 注释中使用 import() 允许您引用其他模块的类型。

语法

ReturnType<typeof import('./a').request>
本质上翻译为“./a模块中请求函数的返回类型”。

如果需要更多帮助,请评论。

© www.soinside.com 2019 - 2024. All rights reserved.