Как мне сопоставить типы аргументов Elmish toNavigable
В данный момент я пытаюсь изучить стек SAFE, в частности, пытаюсь справиться с переходом по URL через Elmish; Я следовал примеру кода на сайте Elmish, который определяет функцию отображения маршрута, а затем передает его в функцию parsePath. Однако Program.toNavigable ожидает тип Parser<'a> (псевдоним типа для Location -> ' a) в качестве первого аргумента, но первый аргумент примера кода (маршруты parsePath) - это опция Location -> '. Очевидно, я могу использовать композицию функций, чтобы получить правильную типизацию, но мне кажется, что я что-то здесь упускаю. Может кто-нибудь, знакомый с навигацией по URL в Elmish посоветовать
1 ответ
Ну а Parser<'a option>
это Parser<'a>
(просто с другим 'a
), так что все должно составлять просто отлично.
Скажем, например, что следующий тип определяет всю навигацию:
type Route = Blog of int | Search of string
Тогда вовлеченные стороны должны иметь следующие типы:
init: Route option -> Model * Cmd<Msg>
parser: Parser<Route option>
urlUpdate: Route option -> Model -> Model * Cmd<Msg>
и вы составляете свою программу таким образом:
Program.mkProgram init update view
|> Program.toNavigable parser urlUpdate
|> Program.withReactBatched "elmish-app"
|> Program.run