javascript - 使用@typedef 定义特定的函数类型

标签 javascript function typedef google-closure jsdoc

我不知道其中有多少(如果有的话)与 Google Closure 相关,或者它是否都是干净的 jsdoc,但我尝试使用 @typedef 来定义这样的特定类型的函数;

/**
 * @typedef {function(paramType0, paramType1):returnType} name.space.and.TypeName
 */

也试过

/**
 * @typedef {function(paramType0, paramType1):returnType} 
 */
name.space.and.TypeName;

其中参数和返回类型是我要定义此函数规范的原因。我的问题是这样的;

为什么验证告诉我“方法不是函数类型”。我知道可以选择使用“函数”类型,但据我所知,这不允许我定义参数和返回类型吗?我在这方面也错了吗?

无论如何,我将不胜感激。谢谢。

最佳答案

typedef 的典型用法如下所示:

/** @typedef {function():string} */
var SomeFunctionType;

/** @param {SomeFunctionType} x This is a function */
function useFunction(x) {
  ...
}

这个问题缺少一些细节,我希望您实际上想要一个 @type 声明来键入一个值,而不是创建一个类型名称:

/** @type {function():string} */
var someFunction = getFunctionFromSomewhere();

someFunction();

可以在此处找到 jsdoc 注释的概述: https://developers.google.com/closure/compiler/docs/js-for-compiler

关于javascript - 使用@typedef 定义特定的函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474144/

相关文章:

c++ - 如何在字符串C++中使用neighbor_find

python - 如何在一个输入中有多个字符串打印在一行中?

c++ - 枚举 "copy"问题

javascript - 展开表格行以显示更多数据

javascript - 当我在 Javascript 中的 .exec() 结果上使用 .index 时,它是如何工作的?

Javascript 原型(prototype)常量声明

c# - 如何使 C# 函数参数充当值?

c++ - typedef 没有替换为数据类型

c - 在创建 typedef 结构时指定两种类型有什么好处?

javascript - 克隆具有不同选择器的元素,避免代码重复