Elm の port で Unit を扱う
Elm の port
において, Unit
(()
) を引数にとるような場合について微妙にハマったのでメモ.
詳細
以下のような内向きのメッセージ, つまり, 「何かが起こったことだけ知りたい, パラメータは何も渡す必要ない」ような場合を考えます.
port somethingHappend : (() -> msg) -> Sub msg
このとき, JavaScript 側を以下のように記述するとエラーとなってしまいます.
app.ports.somethingHappend.send();
// => Error: Trying to send an unexpected type of value through port
以下のように, 明示的に null
を渡してやることで, エラーにならずメッセージを送信することができます.
app.ports.somethingHappend.send(null);
公式に記述が見つけられないですがどうやらそういうことらしい…
参考
https://stackoverflow.com/questions/41679386/elm-define-subscription-port-with-no-parameters