离开很久后,我将回到一个 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