web-dev-qa-db-ja.com

JSDocでDOMノードを含むものとしてパラメーターをマークするにはどうすればよいですか?

パラメータがDOMノードであることを示したいのですが、JSDocでそれを示す方法に関する情報が見つかりません。 {Object}、しかしそれはかなり醜いです。むしろ{Node}または{DOMNode}ですが、その方向を示すための例は見つかりません。

つまり、パラメーターをDOMノードを想定しているとマークするにはどうすればよいですか?

36
cdeszaq

From jsdoc.app for @typeアノテーション:

タイプ式には、シンボルへのJSDoc名前パスを含めることができます(たとえば、myNamespace.MyClass)。組み込みのJavaScriptタイプ(文字列など)。またはこれらの組み合わせ。 Google Closure Compilerの型式だけでなく、JSDocに固有の他のいくつかの形式も使用できます。

[...]

各タイプは、以下に説明する形式のいずれかを使用して、タイプ式を提供することにより指定されます。 JSDocは、必要に応じて、他のシンボルのドキュメントへのリンクを自動的に作成します。たとえば、@ type {MyClass}は、その記号がドキュメント化されている場合、MyClassドキュメントにリンクします。

したがって、シンボルにリンクできます。 HTMLElement (および HTMLImageElement のような継承オブジェクトはシンボルです。したがって、仕様に従えば、次のことが許可されます。

@type {HTMLElement}

何かのタイプがHTMLElement(つまり、DOMノード)であることを示します。

これが明示的に文書化されていない理由についての私の推測は、DOMノードオブジェクトがJavaScript組み込みではないためです(例:StringまたはNumber)。これらはクライアントブラウザによって追加されるので、JS言語の仕様に関する限り、技術的には、あなたや私が作成できる他のシンボル(ネイティブブラウザコードは別として実装される)と同じです。

ドキュメントを実際にコンパイルする段階には至っていませんが(これは別の話です)、これが上記がJSDocによって本当に受け入れられるかどうかを確認しますが、これは私が作業するこの特定の概念と私たちの標準を解釈して従う方法ですIDE(IntelliJ)はそれを受け入れます。

49
ajp15243

ユーザーがクリックできるものを必要とし、ドキュメントへのリンクをたどる場合は、@externalを使用できます。

/**
 * A node in the DOM tree.
 *
 * @external Node
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node Node}
 */

/**
 * @param {external:Node} node
 */
function foo(node) {
}

私はこれを気にせず、そのようなパラメータを{Node}でマークします。すべてのコードはモジュール内にあるため、私が定義する型はすべてmodule:で始まります。したがって、Nodeという名前のクラスがあったとしても、fooで定義されている場合、module:foo~Nodeと表示されます。

8
Louis