У меня есть два модуля elm, которые пытаются использовать тип объединения, когда я пытаюсь реорганизовать свое приложение, как описано здесь https://www.elm-tutorial.org/en-v01/02-elm-arch/07-composing-2.html, но я продолжаю получать
does not expose
хотя я пытался смоделировать его как в 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`.
Единственное, что я нашел здесь, - это старые вопросы, которые, похоже, являются тем же событием, хотя и со старым синтаксисом: Доступ к типам объединения вне модуля объявления в Elm
В случае необходимости я использую вяз 0.18.0.
Спорим, я просто что-то упустил. Кто-нибудь может определить проблему?
Он был там, я просто переименовал его, чтобы отделить выпуск и забыл одно место.
Module1.OneMsg
- это тип. Html.map
ожидает функцию в качестве первого параметра. Обычно сообщения всплывают примерно так (в Module2
):
type Module2Msg
= ...
| Module1Msg Module1.OneMsg
И тогда вы могли бы использовать это так в Module2
:
Html.map Module1Msg (Module1.view model)
Извините, забыл включить "основное" сообщение, которое у меня есть. Отредактировал вопрос, чтобы включить это.
Извините, я не использую это имя повторно. Думаю, это было бы довольно глупо. Это была простая ошибка копирования и вставки.
В этом случае у вас должно быть все в порядке с Html.map Module1Msg (Module1.view model)
(ответ обновлен)
Теперь я это вижу. Html.map Module1.OneMsg (Module1.view model)
против Html.map Module1Msg (Module1.view model)
. Спасибо.
Не могли бы вы показать определение типа
OneMsg
?