シグネチャの読み方
シグネチャのセクションは通常、次の形式で記述されます。
vnode = m(selector, attributes, children)
引数 | 型 | 必須 | 説明 |
---|---|---|---|
selector | String|Object | はい | CSSセレクター、またはコンポーネント。 |
attributes | Object | いいえ | HTML属性、または要素のプロパティ。 |
children | Array<Vnode>|String|Number|Boolean | いいえ | 子vnode。スプラット引数として記述することも可能です。 |
戻り値 | Vnode | vnode |
テーブル上部のシグネチャ行は、メソッドの一般的な構文を示しています。メソッド名、引数の順序、推奨される戻り値の変数名が示されます。
引数列は、各行で説明するシグネチャの要素を示します。returns
行は戻り値に関する情報を含みます。
型列は、引数に期待される型を示します。
パイプ(|
)は、引数が列挙された型のいずれかを取り得ることを示します。例えば、String|Object
は、selector
が文字列またはオブジェクトのいずれかであることを意味します。
Array
の後の山括弧(< >
)は、配列要素の型を示します。例えば、Array<String>
は、引数が配列であり、その配列内のすべての要素が文字列でなければならないことを意味します。Object
の後の山括弧は、マップ(連想配列)を示します。例えば、Object<String,Component>
は、引数がオブジェクトであり、そのキーが文字列で、値がコンポーネントであることを意味します。
特定のオブジェクトの構造が必要であることを示すために、ネイティブ型以外の型が表示されることがあります。例えば、Vnode
は、仮想 DOM ノードの構造を持つオブジェクトです。
必須列は、引数が必須かオプションかを示します。引数がオプションの場合、null
またはundefined
を設定するか、完全に省略して次の引数をその場所に指定できます。
オプションの引数
大括弧[ ]
で囲まれた引数はオプションです。以下の例では、url
がオプションの引数です。
m.request([url,] options)
スプラット
スプラット引数は、引数が配列の場合に、角括弧を省略して、メソッドに可変長の引数を渡せることを意味します。
上記の例では、m("div", {id: "foo"}, ["a", "b", "c"])
をm("div", {id: "foo"}, "a", "b", "c")
と記述できることを意味します。
スプラットは、JSにコンパイルされる言語などで役立ち、いくつかの一般的なユースケースで簡潔な記述を可能にします。
関数のシグネチャ
関数は矢印(->
)で表されます。矢印の左側は引数の型を示し、右側は戻り値の型を示します。
例えば、parseFloat
のシグネチャはString -> Number
です。これは、文字列を入力として受け取り、数値を戻り値として返すことを意味します。
複数の引数を持つ関数は、括弧で表されます:(String, Array) -> Number
コンポーネントのシグネチャ
コンポーネントはm
の呼び出しによって示されますが、最初のセレクター引数は、関連する文脈で名前が付けられた定数に設定されます。
vnode = m(m.route.Link, attributes, children)
引数 | 型 | 必須 | 説明 |
---|---|---|---|
attributes.href | Object | はい | ナビゲーション先のターゲットルート。 |
attributes.selector | String|Object|Function | いいえ | 使用するタグ名を設定します。指定された場合、m の有効なセレクターである必要があります。デフォルトは"a" です。 |
attributes.options | Object | いいえ | m.route.set に渡されるオプションを設定します。 |
attributes | Object | いいえ | 返される vnode に適用するその他の属性を渡すことができます。 |
children | Array<Vnode>|String|Number|Boolean | いいえ | このリンクの子vnode。 |
戻り値 | Vnode | vnode。 |
ここで指定された子は、特に明記されていない限り、スプラット引数として記述できるものと見なされます。
適切な子や属性を持たない要素は、関連するパラメーターを完全に省略できます。
vnode = m(Component, attributes)
引数 | 型 | 必須 | 説明 |
---|---|---|---|
attributes.href | Object | はい | リンク先 |
attributes | Object | いいえ | vnode に適用されるその他の属性 |
戻り値 | Vnode | vnode |