【问题标题】:Is the truly actual type of error in Observable class of Rx really any?Rx 的 Observable 类中真正实际的错误类型真的存在吗?
【发布时间】:2018-02-10 22:10:43
【问题描述】:

我正在尝试强制执行更硬类型的编码结构,以下可观察的智能感知信息引起了我的好奇心。

(method) Observable.subscribe(next?: (value: Response) => void, error?: (error: any) => void, complete?: () => void): 订阅(+2 重载)

现在,我确实明白它的意思了但是我很惊讶为什么error 参数被输入any 而不是“真实”的东西。我知道如果我将其用作any,则有value 字段和requestId

是不是说 observable 中error 实例的结构完全依赖于服务器响应,根本无法输入?

【问题讨论】:

  • 你可以throw JavaScript 中的任何东西。这与服务器无关,这是因为在通用 Observable<T> 中,您不能对错误做出任何假设。

标签: angular typescript rxjs observable


【解决方案1】:

Observable 是一个泛型类,Observable<T>。您正在调用的 .subscribe 方法的版本最多需要三个参数:

subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;

请注意,只有第一个回调 next 在其定义中使用泛型类型 T。这是因为你可以在 JavaScript 中 throw 任何东西,所以通用版本无法假设 error 回调可能会收到什么。

获得更具体的错误类型的唯一方法是创建一个Observable<T, E>error?: (error: E) => void

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多