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

时间:2015-04-06 15:20:22

标签: 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;

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

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

在任何情况下,我都非常感谢这方面的一些帮助。感谢。

1 个答案:

答案 0 :(得分:3)

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