Скажем, у меня есть такой тип объединения:
type Route
= Home
| License
| UserProfile { username : String }
| Search { query : String }
| SomeOtherPage
На практике мне часто приходится работать с подмножествами этого объединения.Например:
type StaticRoute = Home | License
Я хотел бы иметь возможность определять функции, которые принимают подмножества, как указано выше, вместо более широких Route
.
Я не хочу вкладывать StaticRoute
внутри Route
, вот так:
type Route
= Static StaticRoute
| UserProfile { username : String }
| Search { query : String }
| SomeOtherPage
Это потому, что я хочу иметь возможность определять множество различных подмножеств Route
, некоторые из которых могут перекрываться:
type StaticRoute = Home | License
type RouteWithServerRendering = Home | Search { query : String }
type LoggedInRoute = SomeOtherPage
-- and so on…
Как тогда я могу определить подмножества Route
без повторения определений?