如何使用命名参数为完成处理程序创建类型别名

Ale*_*dar 6 ios type-alias swift

到目前为止我所拥有的是这样的:

  1. 我已经定义了typealias完成处理程序

    typealias UserCompletionHandler = (_ object: User?, _ error: ApiError?) -> Void
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我创建了一个使用此类型别名的服务函数

    func login(email: String, password: String, completion: UserCompletionHandler) {
       // ...
       // this part here handles API call and parsing logic
       // ...
    
       completion(user, nil)
    }
    
    Run Code Online (Sandbox Code Playgroud)

我想要实现的是通过引入命名参数来获得更具可读性的带有参数的完成回调。想法是这样结束:

   completion(object: user, error: nil)
Run Code Online (Sandbox Code Playgroud)

或者甚至更好地将错误参数设置为可选,这样我就可以调用

   completion(object: user)
Run Code Online (Sandbox Code Playgroud)

问题是我找不到改变typealias定义的方法来实现这一点。

rra*_*ael 4

显然这是不可能的。您可以在 swift evolution 提案中找到此选择背后的解释:0111-remove-arg-label-type-significance.md

函数类型只能根据形式参数和返回值的类型来定义。禁止写出包含参数标签的函数类型