注释javascript函数参数?

Wil*_*sem 4 javascript reflection annotate

是否可以像使用C# 中的属性那样注释 JavaScript 函数参数?

示例(C#)

public void DoSomething([RequiredAction(Action="some_action")] Client client) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

目的是 - 给定一个函数 - 使用反射来检查例如参数的“类型”并在调用它之前执行必要的转换。JavaScript确实是动态类型的,但例如可以使用注释来定义实例的“类型”,特定函数期望(例如,param应该是整数或数组)。

编辑:类型方面只是注释的一种可能用途。例如,还可以指定必须首先在该属性或方面(例如数组的最大允许长度)上运行特定函数。

人们当然可以使用这个答案并通过使用特定的参数前缀来注释参数。例如,匈牙利表示法在哪里sParam识别参数应该是一个字符串。但这并不是很方便,也不是那么可扩展,因为它需要指定名称。有没有更通用的方法来实现这一目标?

Xot*_*750 5

我喜欢使用JSDOC,这些不在运行时检查,但可以在某些编辑器(例如komodo edit)和独立应用程序(我认为Google 闭包编译器是其中之一)中检查。一个例子。

/**
 * @namespace {Object} myObject
 */
var myObject = {};

/**
 * This returns true if the operand inputArg is a String.
 * @memberof myObject
 * @name something
 * @function
 * @param {*} inputArg
 * @returns {boolean}
 */
myObject.something = function (inputArg) {
    return type inputArg === 'string';
};
Run Code Online (Sandbox Code Playgroud)