2017-12-20 23 views
2

JavaScriptの最初のパラメータは、オプションのを持つ迷惑な関数の1つを文書化しようとしています。ドキュメントJavaScriptのオプションの最初のパラメータ

機能のようなもの.use()

expressから
function use(path, callback) // path is optional 

私は働く何かを見つけようとし、理想的にはひどく醜いではありませんよ。実際のコード署名用

私の好みはこの次のようになります。その場合

function use(...args) { 
    const [callback, path] = args.reverse(); 
} 

、私は2つのパラメータを持っていないので、私は2本の@paramラインを使用しようとすると、私は中に怒鳴ら取得しますJSDocのブロック:私は意図したとおりにパラメータを使用し、所定の位置にパラメータを置くための異なるパターンを使用している場合callbackStringではないので

/** 
* @param {String=} path 
* @param {Function} callback 
*/ 
function use(...args) // mismatched parameters 

、私は(WebStormで)怒鳴らます:

/** 
* @param {String=} path 
* @param {Function} callback 
*/ 
function use(path, callback) { 
    if (typeof path == 'function') { 
    callback = path; // yelled at because callback can't be a string 
    path = undefined; 
    } 
} 

私はグーグルで調べて、この問題について議論しているさまざまな人々と古いものをたくさん見つけましたが、明確な答えはありません。投稿が古くて、多くのことが起こったので、私は新しいことを尋ねたがっています。これを文書化して、少なくともWebStormではすべてが幸せであるか、オプションの最初のパラメータを可能にする新しいES#構文があります(それは適切な自動完成を生成することができます)?

+0

これはflowまたはtypescriptに切り替える場所です) – vzwick

+2

または、このgoofy reverse optional parametersパターンを使用しているときに、シャインで人を蹴り始めてください。私はバニラJSが大好きですが、最初にこのパターンを普及させたのは...私の好きな人ではありません。 = p – samanime

+0

半関連のノート: '@ callback'タグを見てみるとよいでしょう - http://usejsdoc.org/tags-callback.html – vzwick

答えて

1
@param {(String=|Function=)} path 

おそらくあなたが探しているものです。

+0

私はこれを知っていて、それは私が得ることができる最も近いかもしれません...しかし、ああとても醜いです。私はそれから、「それが関数なら、実際にコールバックだ」と説明しなければなりません。 – samanime

+0

うん、それゆえに '@コールバック'は、物事をもっと明白にする。また、2番目のパラメータをオプションとしてマーキングすることは、おそらく少しのヒントを提供するでしょう。私は完全に事実上超時代遅れであることに完全に同意する。 – vzwick