打字稿:在键入对象或数组时接收错误为rxjs主题变量

时间:2017-09-10 17:28:29

标签: angular typescript rxjs observable

我的片段。

signUpInfo: {code: string, message: string} 
     = new Subject<{code: string, message: string}>();

错误Atom编辑器给了我。

  

输入'主题&lt; {code:string,message:string}&gt;'不能转让给   输入'{code:string,message:string}'。财产'代码'缺少   输入'Subject&lt; {code:string,message:string}&gt;'。

typescript error

删除变量中的输入,替换为any{}类型会删除错误。

signUpInfo = new Subject<{code: string, message: string}>();
signUpInfo: any = new Subject<{code: string, message: string}>();
signUpInfo: {} = new Subject<{code: string, message: string}>();
signUpInfo = new Subject<{code: string, message: string}>();
signUpInfo: any[] = new Subject<model[]>();

我习惯在TS中的每个变量上输入一个类型,在传递常规类型(如字符串数字布尔等)时没有问题,但是当传递数组或对象作为主题变量类型时,似乎我不允许它。

在typescript中输入对象或数组主题变量的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

正确的方法是设置:

signUpInfo: Subject<{code: string, message: string}> = new Subject<{code: string, message: string}>();

实际上我认为您甚至不需要设置类型,因为当您为其分配Subject<{code: string, message: string}>的实例时会自动设置该类型。因此,如果您尝试调用signUpInfo.next(1),编译器将抛出类型错误。