JSDOC和揭示模块模式

时间:2016-02-05 13:44:58

标签: webstorm jsdoc3

我有返回对象的函数。我希望将他们的jsdoc定义放在webstorm intellisense上查看它们的属性和方法。

我如何编写以下函数的jsdoc?

function MyOtherFunc() {
  return { a:'for eg string', b:12 }
}

function MyFunc() {
  var prop = MyOtherFunc();

  function myMethod() {
    alert( 'my method' );
  }

  function myOtherMethod() {
    alert( 'my other method' );
  }

  // explicitly return public methods when this object is instantiated
  return {
    someMethod : myMethod,
    someOtherMethod : myOtherMethod
  };      
}

2 个答案:

答案 0 :(得分:0)

在没有JSDoc的WebStorm中正确处理了这个确切的情况,但您可以使用closure compiler type syntax

let s = series [1 => 1.0; 2 => nan]
s.Get(s.LastKey(), Lookup.ExactOrSmaller)

答案 1 :(得分:0)

您应该能够使用@namespace@memberof@instance完成您想要的工作。

/**
 * @namespace MyFunc
 */
function MyFunc() {
  var prop = MyOtherFunc();

  /**
   * Does myMethody things
   *
   * @memberof MyFunc
   * @instance
   */
  function myMethod() {
    alert( 'my method' );
  }

  /**
   * Does myOtherMethody things
   *
   * @memberof MyFunc
   * @instance
   */
  function myOtherMethod() {
    alert( 'my other method' );
  }

  // explicitly return public methods when this object is instantiated
  return {
    someMethod : myMethod,
    someOtherMethod : myOtherMethod
  };      
}

如果MyFunc有任何静态方法,您只需关闭@instance或用@static明确标记。

/**
 * Say hello
 *
 * @param {string} [name] - Who to say hello to
 * @memberof MyFunc
 * @static
 */
MyFunc.helloWorld = function (name) {
  console.log('Hello ' + (name || 'world'));
}

在这种情况下,使用@memberof@static应该是可选的。解析器应该能够自己解决这个问题;但是,您可能希望明确地使用它们,以使任何阅读代码的人都能明白。