泛型类型“结果”专门具有太多类型参数(得到 2,但预期为 1)

Posted

技术标签:

【中文标题】泛型类型“结果”专门具有太多类型参数(得到 2,但预期为 1)【英文标题】:Generic type 'Result' specialized with too many type parameters (got 2, but expected 1) 【发布时间】:2019-05-26 22:36:10 【问题描述】:

我将如何解决这个错误,它只在我导入 Almofire 时出现。

【问题讨论】:

请将代码和错误以文本形式发布。 【参考方案1】:

这是Swift.Result<T, Error>,而不是Swift.Result<T1, T2>。如果要传递两个值,请使用元组,即Swift.Result<([Character], Data), Error>(元组可以在结果的开关/案例处理中自动扩展)

此外,Alamofire 定义了它自己的 Result<T> 类型。如果你想使用 Swift 5 类型,你应该在它前面加上 Swift.

【讨论】:

谢谢,这是我第一次使用 Alamofire 在我的情况下是与 Alamofire 的冲突,只需添加前缀问题就解决了。非常感谢。 我们可能可以删除答案的第一部分。它实际上是Swift.Result<Success,Failure> where Failure: Error。这里真正的问题是 Alamofire 对它的定义不同(你稍后会提到)。第一部分令人困惑且不正确 SuccessT。你在挑剔,没有什么是不正确的,任何会感到困惑的人都已经知道 Swift 中的泛型是如何工作的。此外,Alamofire 将其内部类型替换为 Swift 5 around the same time this answer was written 我们不妨删除这个问题。然而它不断得到支持,所以我猜人们仍然会在旧版本的 Alamofire 中遇到这个问题。 @DanielGalasko 它也引出了一个问题,你为什么在这里评论一个超过 2 年的答案?在 Stack Overflow 上肯定有更好的事情要做,比如回答问题:p

以上是关于泛型类型“结果”专门具有太多类型参数(得到 2,但预期为 1)的主要内容,如果未能解决你的问题,请参考以下文章

带有泛型的 Typescript JSX - 参数隐式具有“任何”类型

无法专门化非泛型类型 ResponseSerializer

GetMethod 的 Type[] 以获取具有两个参数和一个类型参数的泛型方法

TypeScript 中具有泛型类型参数的泛型类型的替代方案

TS泛型类、泛型接口、泛型函数

泛型的学习