很长一段时间后,我将返回Angular项目,并将Angular(和RxJS)更新到版本6。抛出的许多错误之一(我认为)与可管道运算符有关,它们是RxJS 6中的新功能。这是一个示例:
Assert.AreEqual(1, emailSender.SentEmails.Count)
下面是将其引发的代码:
src/app/member-view/member-view.service.ts(126,13): error TS2339: Property 'monthOne' does not exist on type 'any[]'.
直到将运算符let results = this.db.list(`renown/${uid}/${this.years[0]}/${this.months[0]}/total`)
.pipe(switchMap(total => {
let joinedObservables: any[] = []
joinedObservables.push(this.db
.object(`renown/${uid}/${this.years[0]}/${this.months[0]}/total`)
.pipe(tap(value => {
if (value.$value !== null) {
total.monthOne = value.$value
移到switchMap
内才存在此错误,这是从RxJS 6开始所必需的。这是键入问题还是语法错误?
答案 0 :(得分:0)
您应该完全键入数据。由于您尚未输入数据,this.db.list
显然会给您any[]
,因为它没有输入。因此,例如通过使用接口一路输入您的数据,这里我使用的是MyType1>
和MyType2>
:
let results = this.db.list<MyType1>(`renown/${uid}/${this.years[0]}/${this.months[0]}/total`)
.pipe(switchMap((total: MyType1) => {
let joinedObservables: MyType[] = []
joinedObservables.push(this.db
.object<MyType2>(`renown/${uid}/${this.years[0]}/${this.months[0]}/total`)
.pipe(tap((value: MyType2) => {
if (value.$value !== null) {
total.monthOne = value.$value