In the class declaration, the type that you seem to type, i.e. PRESENTER, undesirable. I am not sure why the compiler allows this declaration of a partial type, although it later correctly gives an error when trying to create a variable using such a partial type. The workaround for now is to avoid this type and directly declare your presenter variable of type BasePresenter or present a type of PRESENTER using an alias of type:
Sort of -
class BaseViewController <VIEW: BaseView> : UIViewController, BaseView{ typealias PRESENTER = BasePresenter<VIEW>! var presenter : PRESENTER!
source share