RXjS管道运算符:“属性不存在”

时间:2019-09-08 21:03:23

标签: angular rxjs

很长一段时间后,我将返回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开始所必需的。这是键入问题还是语法错误?

1 个答案:

答案 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