Swift泛型如何表示「无类型」:适配Google Promises无返回值场景
解决方案
针对无返回值的Promise使用场景,你可以直接使用Swift标准库自带的以下几种类型替换SomeType,不需要额外自定义非泛型实现:
- 场景1:Promise正常结束时不需要携带任何返回值
直接使用Void作为泛型参数即可,示例代码:
结束Promise时仅需要传入空元组let promise = Promise<Void>.pending()()作为resolve参数:promise.resolve(()),完全不需要处理多余的返回值,适配异步流程控制、异常捕获的使用需求。 - 场景2:需要仅允许
nil作为合法resolve值
使用Void?可选类型作为泛型参数,resolve时直接传入nil即可,符合你要求的只有nil为合法值的诉求。 - 场景3:Promise永远不会正常resolve,只会抛出异常
使用Never作为泛型参数,该类型没有任何可用实例,天然表达不会产生合法返回值的语义。
内容的提问来源于stack exchange,提问作者Tomáš Kafka
相关产品推荐
相关产品推荐

