为了账号安全,请及时绑定邮箱和手机立即绑定

如何在RxJs(BehaviorSubject)中使用TypeScript进行严格的类型检查?

如何在RxJs(BehaviorSubject)中使用TypeScript进行严格的类型检查?

茅侃侃 2022-08-04 09:48:13
我正在尝试使用RxJs创建一个行为主体。在此代码中import { BehaviourSubject } from 'rxjs';const name = new BehaviourSubject("Dog");// Here in the subscribe callback, I am using TypeScript to specify the argument type should be string.name.subscribe((name: string):void => {console.log(name)});name.next("cat"); //cat我想限制下面的这些调用,因为我需要在上面提到的订阅回调中传递一个字符串作为参数。name.next(5); // This will print 5name.next({a:5,b:{c:10}}); // This will print the objectname.next(true); // This will print true有没有办法限制以下在订阅回调中没有有效参数的调用?
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

如果您查看 BehaviorSubject 的类型定义,请注意该类接受泛型类型参数(即 )。BehaviorSubject<T>

在您的示例中,您可以通过创建 的参数化版本来规定内部值是某种类型,具体而言:stringBehaviorSubject

const name = new BehaviorSubject<string>("Dog");

在这样做时,应将类型检查应用于 和 的后续用法。next()subscribe()


查看完整回答
反对 回复 2022-08-04
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您可以为 创建类型别名,因为它接受类型参数作为泛型的一部分。BehaviourSubject


interface NameSubjectObj {

  a: number;

  b: {

    c: number 

  }

}


type NameSubject = string | boolean | NameSubjectObj;


const name = new BehaviourSubject<NameSubject>("Dog");

这将确保上述内容将接受指定的 3 种类型。BehaviourSubject


查看完整回答
反对 回复 2022-08-04
  • 2 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信