2017-09-10 25 views
0

我的代码段。Typescript:将对象或数组输入为rxjs时收到错误主题变量

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

错误的Atom编辑器给了我。

类型“主题< {代码:串,消息:字符串}>不是分配给 类型 '{代码:串,消息:字符串}'。在 类型'主题< {code:string,message:string}>'中缺少属性'代码'。

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[]>(); 

我习惯把typeings在TS每个变量,我经常路过类型,比如串号布尔等时,但通过数组或对象作为主题变量分型时,似乎我不是没有问题允许它。

在打字稿中键入对象或数组主体变量的正确方法是什么?

+1

A主题就像一个电话:它**发出**消息。电话不是信息。变量的类型应该是您在等号右侧使用的类型:Subject <{code:string,message:string}> –

+0

谢谢@JBNizet – Vadamadafaka

回答

3

正确的方法是设置:

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

其实我觉得你甚至都不需要设置类型,因为它是当你分配给它的Subject<{code: string, message: string}>一个实例自动假定。所以如果你试图调用signUpInfo.next(1),编译器会抛出一个类型错误。

+0

谢谢你,我明白了为什么有很多主题变量片段没有类型 – Vadamadafaka