Most static time type systems can enforce that a voting age is an Integer, say, but can't validate that any value is at least 18, for example.
E.g. a colleague implements de-serialisation for your type but adds an empty constructor to make their life easier. You might not learn there's a hole in the boat before your first bug.
In practice the only benefit is very similar to checked exceptions - can't forget to check that value is in range.