繁体   English   中英

JSDoc:@type 用于嵌套 function

[英]JSDoc: @type for nested function

我有一个factory function 定义并返回其他 function - myFunc 我想用 JSDocs 记录我的工作变量:

function factory() {
    function myFunc(param) {
        console.log(`Hello ${param}!`);
    }

    return myFunc;
}

/** @type {factory} */
const fact = factory;
/** @type {???} */
const fn = fact();
fn('world');

我可以记录factory function:

/** @type {factory} */
const fact = factory;

但我的 IDE (IDEA PhpStorm) 无法以相同的方式解析内部 function:

/** @type {myFunc} */
const fn = factory();

在这种情况下,我不能使用 Ctrl+单击导航。 是否存在解决内部 function 的方法? 嗯。 factory#myFunc

/** @type {factory#myFunc} */
const fn = factory();

可以在嵌套的 function 上使用@exports指令

function factory() {
    /** @exports myFunc */
    function myFunc(param) {
        console.log(`Hello ${param}!`);
    }
    return myFunc;
}

/** @type {factory} */
const fact = factory;
/** @type {myFunc} */
const fn = fact();
fn('world');

您的factory返回一个 function ,它接受一个字符串并且什么都不返回。

这可以使用@return标记通过类型表达式来表达:

/** @return {function(string): void} */
function factory() {
  function myFunc(param) {
    console.log(`Hello ${param}!`);
  }
  return myFunc;
}

如果x被分配了factory()的结果,您的 IDE 应该能够计算出它的类型:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM