Weaver icon indicating copy to clipboard operation
Weaver copied to clipboard

Convenience `DependencyResolver` typealias for each injectable type

Open trupin opened this issue 5 years ago • 0 comments

When injecting dependencies into a type, it is currently required to write the following:

final class AVeryLoooooooooooooooooooongTypeName {
   private let dependencies: AVeryLoooooooooooooooooooongTypeNameDependencyResolver

   init(injecting dependencies: AVeryLoooooooooooooooooooongTypeNameDependencyResolver) {
       self.dependencies = dependencies
   }
}

Weaver cannot auto generate that part as dependencies cannot be declared in an extension, but it can facilitate the declaration by generating a typealias for the dependency resolver.

Generated code:

extension AVeryLoooooooooooooooooooongTypeName {
   typealias DependencyResolver = AVeryLoooooooooooooooooooongTypeNameDependencyResolver
}

User's code:

final class AVeryLoooooooooooooooooooongTypeName {
   private let dependencies: DependencyResolver

   init(injecting dependencies: DependencyResolver) {
       self.dependencies = dependencies
   }
}

trupin avatar Oct 22 '20 19:10 trupin