Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以创建行为主题<;无效>;()没有初始值?_Javascript_Typescript_Rxjs_Behaviorsubject - Fatal编程技术网

Javascript 是否可以创建行为主题<;无效>;()没有初始值?

Javascript 是否可以创建行为主题<;无效>;()没有初始值?,javascript,typescript,rxjs,behaviorsubject,Javascript,Typescript,Rxjs,Behaviorsubject,我使用behavior subject纯粹作为触发器,因此有效负载并不重要。订阅时主题应该“激发”(调用下一步)(简单的主题不起作用!)。原则上,有一个行为主题就足够了: const readonly trigger = new BehaviourSubject<void>() ^^

我使用
behavior subject
纯粹作为触发器,因此有效负载并不重要。订阅时主题应该“激发”(调用
下一步
)(简单的
主题
不起作用!)。原则上,有一个
行为主题就足够了

const readonly trigger = new BehaviourSubject<void>()
                                                   ^^
                                                   must not be empty
const readonly触发器=新行为主体()
^^
不能是空的

然而,创造这样一个主题似乎是不可能的。或者有没有一种方法可以创建一个类型为
void
行为主体
,没有初始值?

显然
主体
不能满足您的需求,因为您希望订阅时触发。您可以将初始值设置为
undefined
,但

new BehaviorSubject<void>(undefined)
新行为主体(未定义)

或者
null
也可以正常工作。

显然
Subject
不能满足您的需要,因为您希望订阅时触发。您可以将初始值设置为
undefined
,但

new BehaviorSubject<void>(undefined)
新行为主体(未定义)

或者
null
也可以正常工作。

当然,有效负载不重要,但必须有有效负载。否则,您如何区分不发射的流和不发射的流之间的区别?这两样东西看起来一样。考虑任何其他信号。“当我说‘贝瑞’时,你就开始比赛”——当然,你用什么词都不重要,但因此说“当我什么都不说时,你就开始比赛”是没有意义的。这确实是一个很糟糕的信号我只需要选择一个布尔值或null(内存占用小)就可以了。@MrkSef不,不必有有效负载。即使没有值,也会通知观察者发生了什么,因为将调用观察者的
next
方法。请参见未定义的
是一个有效负载。在javascript中,未初始化的值实际上具有未定义的值<代码>未定义
是一种基本类型。听起来很奇怪,您正在用
undefined
初始化BehaviorSubject。将参数传递给订阅的lamba将通过
undefined
调用。这是真的。但对我来说,重要的是避免调用带有无用值甚至可能被误解的
next
(因为有人看到了值本身的意义)。然后在
next
上就没有有效负载了。在我看来,null在这种情况下在语义上是非常清楚的。如果您尝试'trigger.next()
,Typescript也会抱怨。它应该说类似于
next`的内容,需要1个参数,而您已经输入了0。所以你也可以做一些类似trigger.next(null)的事情。在Javascript中,
trigger.next()
trigger.next(undefined)
相同,因此如果您想让typescript编译器满意,同时让它感觉最接近没有参数的普通JS函数调用,那么
undefined
可能就是问题。当然,负载不重要,但必须有负载。否则,您如何区分不发射的流和不发射的流之间的区别?这两样东西看起来一样。考虑任何其他信号。“当我说‘贝瑞’时,你就开始比赛”——当然,你用什么词都不重要,但因此说“当我什么都不说时,你就开始比赛”是没有意义的。这确实是一个很糟糕的信号我只需要选择一个布尔值或null(内存占用小)就可以了。@MrkSef不,不必有有效负载。即使没有值,也会通知观察者发生了什么,因为将调用观察者的
next
方法。请参见未定义的
是一个有效负载。在javascript中,未初始化的值实际上具有未定义的值<代码>未定义
是一种基本类型。听起来很奇怪,您正在用
undefined
初始化BehaviorSubject。将参数传递给订阅的lamba将通过
undefined
调用。这是真的。但对我来说,重要的是避免调用带有无用值甚至可能被误解的
next
(因为有人看到了值本身的意义)。然后在
next
上就没有有效负载了。在我看来,null在这种情况下在语义上是非常清楚的。如果您尝试'trigger.next()
,Typescript也会抱怨。它应该说类似于
next`的内容,需要1个参数,而您已经输入了0。所以你也可以做一些类似trigger.next(null)的事情。在Javascript中,
trigger.next()
trigger.next(undefined)
相同,因此如果您想让typescript编译器满意,同时让它感觉最接近没有参数的普通JS函数调用,那么
undefined
可能就是问题所在。谢谢,
undefined
可以工作
null
不会,至少在TypeScript严格模式下不会。谢谢,
未定义
可以工作
null
不会,至少在TypeScript严格模式下不会。