Связанный тип requestType
не является обязательным в протоколе RequestProcessor
, поскольку он неявный, основанный на связанном типе requester
.
Вы должны просто иметь возможность определить RequestProcessor
такой протокол:
protocol RequestProcesser: AnyObject {
associatedtype requester: Requester
var request: requester { get set }
}
И используйте его так:
class MyRequester: Requester {
typealias requestType = Int
var response: ((Int) -> ())?
}
class MyRequestProcessor: RequestProcesser {
typealias requester = MyRequester
var request = MyRequester()
}
Теперь параметр закрытия response
в методе process()
примет связанный типMyRequester
протокол (в данном случае Int
), поэтому приведение не требуется.