elm - 无法公开 UnionType
问题描述
我有两个 elm 模块试图共享一个联合类型,因为我尝试按照此处所述重构我的应用程序https://www.elm-tutorial.org/en-v01/02-elm-arch/07-composing-2.html但我不断得到
不暴露
即使我尝试将其建模为https://github.com/elm/elm-lang.org/issues/523
模块 1
module Module1 exposing ( OneMsg(..), Model, view, [etc.] )
...
type OneMsg
= Name String
...
模块 2
module Module2 exposing(..)
import Module1 exposing(OneMsg(..))
type Msg
= UrlChange Navigation.Location
| ...
| Module1Msg Module1.OneMsg
...
Html.map Module1.OneMsg (Module1.view model)
...
收到此错误
-- NAMING ERROR ---------------------------------------------- ././view/View.elm
Cannot find variable `Module1.OneMsg`.
74| Html.map Module1.OneMsg (Module1.view model)
^^^^^^^^^^^^^^^^^^
`Module1` does not expose `OneMsg`.
我在这里发现的唯一一件事是一个旧问题,虽然旧语法似乎是同一个事件: Access Union Types outside declaring module in Elm
如果相关,我使用 elm 0.18.0。
打赌我只是错过了一些东西。任何人都可以发现问题吗?
解决方案
Module1.OneMsg
是一种类型。Html.map
期望一个函数作为它的第一个参数。您通常会冒泡消息的方式是这样的(在 中Module2
):
type Module2Msg
= ...
| Module1Msg Module1.OneMsg
然后你可以像这样使用它Module2
:
Html.map Module1Msg (Module1.view model)
推荐阅读
- python - 我试图在我的 pygame 中添加一个敌人,但一切都是错误的
- filter - Tableau - 固定计算字段取决于日期过滤器
- ruby - 顶级代码的 Rubocop 圈复杂度
- python - 如何使用 anaconda 安装 arch 包?
- powershell - 使用 PowerShell 使用 Rename-FTPItem 在 FTP 上移动文件失败并显示“(550) 文件不可用”
- r - DiagrammeR 节点内的段落
- python - 遍历python中的行
- google-bigquery - 如何在bigquery中修剪@和空格字符之间的所有内容
- python - http.server 上的 PUT 请求没有响应
- c# - 将 NLog 注册为其他组件的 Microsoft.Extensions.Logging 提供程序