Related to this discussion is How to represent that a set of data is complete in a type-safe manner, which, unfortunately, also did not have a really nice conclusion (at least at the time of writing).
Ultimately what is another hurdle is that it is rather common to represent a Route multiple times (like e.g. common misspellings, have the singular word redirect to the plural word, or allow route-names in multiple languages), so that’s one pattern that you cannot use at the same time as using the approach @progger proposes.