在 RxJs 和 Angular 中,我应该使用 "$" 符号后缀来命名 Subjects 吗?
在RxJs和Angular中,是否应该为Subjects使用"$"符号后缀的问题,出现的原因是为了方便识别和管理observable值。
根据Angular文档的说明,将"$"符号添加到属性名称中,有助于在代码中查找observable值。此外,如果希望一个属性存储observable的最新值,使用带或不带"$"的相同名称会很方便。
然而,"$"符号的后缀并不意味着observable是异步的,它只是作为一种软约定,用于指示变量是一个流。这更像是一种命名辅助,用于指示类型。
解决方法是根据个人或团队的偏好选择是否使用"$"符号后缀。如果觉得有助于区分和管理observable值,可以使用"$"符号后缀;如果不喜欢这种命名约定或觉得没有必要,也可以选择不使用。
总之,是否应该为Subjects使用"$"符号后缀是一个个人或团队的选择,根据对代码可读性和管理性的需求来决定。
在RxJs和Angular中,有人问是否应该在Subjects的主题中使用"$"符号后缀。这个问题的出现是因为在命名约定中,"$"后缀被用来表示一个变量是可观察的。它有助于区分普通变量和可观察变量。这只是一种实践,可以参考官方文档中关于"$"后缀的解释。
解决方法是参考官方文档中的命名约定,将"$"后缀应用于Subjects的主题。虽然风格指南中只提到了Observable类型的变量,但通过参考官方文档,我们可以确定在Subjects中也可以使用"$"后缀。
以下是官方文档中关于命名约定的摘录:
For observables, use the $ suffix.
因此,根据官方文档的建议,我们可以在Subjects的主题中使用"$"后缀来标识它们是可观察的变量。
在RxJs和Angular中是否应该在Subject中使用"$"符号后缀的问题是因为当从流中提取值时,避免出现相同的变量名。
解决方法是在Subject中使用"$"符号后缀,以避免变量名冲突。
例如,在上面的示例中,如果不使用"$"符号后缀,就会出现两个名为"currentTimeMs"的变量。虽然这仍然可以工作,但会更加混乱。当然,你也可以将内部变量重新命名为不同的名称,但总体上,我发现使用以下命名会更清晰:
const currentTimeSeconds$ = currentTimeMs$.pipe( map(currentTimeMs => currentTimeMs * 1000) )