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

Nin*_*ool 5 javascript typedef function google-closure jsdoc

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

/**
 * @typedef {function(paramType0, paramType1):returnType} name.space.and.TypeName
 */
Run Code Online (Sandbox Code Playgroud)

也试过

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

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

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

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

Joh*_*ohn 5

typedef 的典型用法如下所示:

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

/** @param {SomeFunctionType} x This is a function */
function useFunction(x) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

someFunction();
Run Code Online (Sandbox Code Playgroud)

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