gpt4 book ai didi

angular - RXJS 'never' 主题为泛型

转载 作者:行者123 更新时间:2023-12-04 12:31:37 25 4
gpt4 key购买 nike

我在一个 Angular 项目中使用 RXJS 和 Typescript。我在我的代码中写了以下内容:

const sub = new Subject<never>();

我希望这一行意味着任何定义了“下一步”和“错误”方法的订阅者,如下所示,将永远不会调用“下一步”方法。如果有的话,只会调用“error”方法。

sub.subscribe(() => /*do something with 'next' value*/, error => /*do something with 'error' value*/)

但是,当我写下以下内容时:

sub.next();

我没有收到编译错误。

根据我的理解,Subject 泛型是主题返回的类型,所以 never 意味着我们永远不会调用 next 方法。

谁能解释一下为什么?这是错误、功能还是我的误解?

最佳答案

在您的 Subject 上指定类型参数确实限制了您在调用 .next() 时可以传递的值的类型,因此如果您尝试传递一个值:sub.next ('string value') 你会得到一个错误:

Argument of type 'string' is not assignable to parameter of type 'never'.(2345)

但是,Subject.next()value 参数是可选的(在 RxJS v6 中)。这意味着,允许在不传递参数的情况下调用 sub.next(),因此您可以使用 T 类型的参数调用 Subject.next或者根本没有争论。


我相信这种行为在 RxJS v7 中已经改变。 Interesting GitHub Issue

关于angular - RXJS 'never' 主题为泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68662895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com