使用 JSDoc 从 return 值推断类型

Infer type from return value with JSDoc

从函数 return 类型分配类型的正确方法是什么?

async function getFood(){
  const food = await {fruit: 'banana', qty: 3}
  return food
}

/** 
 * made up syntax
 * @type {returnOf getFood} 
 * */
let doesntWork;

/** @type {{fruit: string, qty: number}} */
let worksButNoInferring

let worksButRequiresCallingFunction = getFood()

如VSCode 所示,return 类型可用。就是不知道不调用函数怎么获取。

可能不符合 JSDoc 规范,但 VS Code 支持 JSDoc 中的 Typescript 语法。

async function getFood(){
    const food = await {fruit: 'banana', qty: 3}
    return food
}

/** @type { typeof getFood extends (...args: any[]) => infer U ? U : any } */
let test;

Playground