2014-09-08 12 views
5

I definiert eine @callback auf diese Weise:Wie definiert man eine Funktion als Callback-Implementierung in JSDoc?

/** 
* @callback MyClass~Handler 
* @param {string} target 
* @param {Options} options - Original options 
*/ 

ich es verwenden, um meine Klasse Prototyp zu definieren:

/** 
* @param {string} name - The name 
* @param {MyClass~Handler} handler 
* @private 
*/ 
MyClass.prototype._builder = function(name, handler) { //... 

Aber wie JSDoc zu sagen, dass die folgende Funktion die gleiche Definition hat wie meine MyClass~Handler (etwas, das wie @isacallback im folgenden Code wäre)?

/** 
* Default handler 
* @isacallback {MyClass-Handler} 
* @private 
*/ 
MyClass.prototype._defaultHandler = function(target, options) { // ... 

Antwort

0

ich nicht getestet, aber da @callback nur einen Typ definiert, verwenden Sie konnten nicht die @type Erklärung?

Mit anderen Worten:

/** 
* Default handler 
* @type {MyClass-Handler} 
* @private 
*/ 
MyClass.prototype._defaultHandler = function(target, options) { // ... 

Siehe http://usejsdoc.org/tags-type.html für weitere Informationen über @type.

+0

Nicht wirklich, weil der '@ type' eine Klasse definiert (ein Typ wie du gesagt hast), also kann ich die Funktionsparameter zum Beispiel mit dieser Anmerkung nicht beschreiben ... –

+0

Ich glaube, du verstehst das falsch: '@ type 'wird nicht verwendet, um eine Klasse zu definieren (dafür steht' @ typedef'). Der @ Callback definiert den Typ (weil @ Callback im Grunde nur '@ typedef' ist, das auf Funktionen beschränkt ist), und dann referenzieren Sie diese Definition mit' @ type' (so wie Sie es mit dem nicht vorhandenen '' möchten @ isacallback'-Tag). – machineghost

Verwandte Themen