No, if you actually wanted a type alias, you would capitalize it. Instead, you're trying to forward an initializer along so that it can be used with static member lookup:
extension Endpoint where Self == MyEndpoints.GetDonuts {
static func donuts(glutenFree: Bool = false, vegan: Bool = false) -> Self {
.init(glutenFree: glutenFree, vegan: vegan)
}
}
I agree that it should be easier to write that sort of code, and I suspect that as more people come across the pain of the boilerplate, we'll at least get better tooling support for generating it.