Weekly Swift articles, podcasts and tips by John Sundell.

Specializing generics with type aliases

Published on 17 Jul 2019
Basics article available: Generics

There are so many cool ways that Swift’s type aliases can be used. Here’s an example of specializing a generic using a type alias — which can then be extended and even subclassed!

// Type aliases can be used to easily specialize generics,
// without needing to actually create any additional "real" types.
typealias ProductLoader = ModelLoader<Product>

// Equivalent to 'extension ModelLoader where Model == Product'
extension ProductLoader {
    convenience init(networking: Networking) {
        self.init(networking: networking,
                  endpoint: Endpoint.product)
    }
}

// Equivalent to 'class DiscountedProductLoader: ModelLoader<Product>'
class DiscountedProductLoader: ProductLoader {
    ...
}