Я бы предложил не делать typealias
само по себе необязательным, а просто простым замыканием:
typealias DirectionsCompletionHandler = (_ route: MKPolyline?, _ directionInformation: NSDictionary?, _ boundingRegion: MKMapRect?, _ error: String?) -> Void
Это стандартное соглашение при определении typealias для замыкания.
А затем определите ваш directionCompletionHandler
, чтобы сделать необязательное поведение явным:
fileprivate var directionsCompletionHandler: DirectionsCompletionHandler?
И компилятору не составит труда выяснить, что его не нужно инициализировать.
Или, конечно, вы можете сделать эту инициализацию явной, если хотите:
fileprivate var directionsCompletionHandler: DirectionsCompletionHandler? = nil