RXjS 管道操作员:"Property does not exist"



离开很久后,我将回到一个 Angular 项目,我正在将 Angular(和 RxJS(更新到版本 6。抛出的许多错误之一(我假设(与可管道运算符有关,这在 RxJS 6 中是新的。下面是一个示例:

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被移动到.pipe()内才存在,这是RxJS 6所要求的。这是键入问题还是语法错误?

您应该一直键入数据。由于您没有键入数据,因此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

相关内容

最新更新