onInput 参数失败(来自 Elm n00b)

onInput argument failure (by Elm n00b)

我正在基于他们的 tutorial 试验 Elm,并且遇到了函数参数声明的问题。

基本上我只是在教程代码中提取了一个函数。没有函数声明它工作正常,但当我包含它时失败。

代码的本质是:

type Msg
  = Name String
  | Password String

view : Model -> Html Msg
view model =
  div []
    [ myInput "text" "Name" Name
    ]

myInput : String -> String -> Msg -> Html Msg
myInput type__ label handle =
  input [ type_ type__, placeholder label, onInput Name ] []

错误信息是:


函数 myInput 的第三个参数导致不匹配。

47| myInput "text" "Name" 名称 函数 myInput 期望第三个参数为:

消息

但它是:

字符串 -> 消息

提示:看起来函数还需要 1 个参数。


理想情况下,我还希望 onInput 的参数是在 myInput 中声明的名为 "handle" 的参数。

myInput 的类型签名不正确。构造函数 Name 有一个参数,这意味着当用作函数时,它的签名是 (String -> Msg)。这就是您应该用于 handle 参数注释的内容。

myInput : String -> String -> (String -> Msg) -> Html Msg
myInput type__ label handle =
    input [ type_ type__, placeholder label, onInput handle ] []