对"Html msg"感到困惑

use*_*666 10 elm

请考虑以下代码段:

type alias Model =
    { x : Int }


testFunc : Model -> Html String
testFunc model =
    div [] []
Run Code Online (Sandbox Code Playgroud)

我在这里很困惑.div是一个返回a的函数Html msg.但 testFunc回报Html String.

这是如何编译的?我错过了一些非常基本的理解吗?

Pet*_*ete 10

你可以治疗msg泛型在面向对象的编程.虽然概念类似,但这在技术上并不正确.请记住,通用术语严格来说并不是正确的术语.

据说,div是一个函数返回一个Html'泛型'类型的值msg(msg可以是任何类型).这将用Html<A>Java或C#编写,其中is A是任何类型的占位符.

Elm有类型推断,所以当返回类型testFuncHtml StringElm时推断msg必须是一个String类型.

另请注意,Elm要求通用类型为小写(例如msg).它经常在Elm代码中混淆,因为人们通常会定义一个真实的类型Msg并命名通用占位符类型msg.