我收到一个错误“传播类型只能从对象 types.ts(2698) 创建”
Posted
技术标签:
【中文标题】我收到一个错误“传播类型只能从对象 types.ts(2698) 创建”【英文标题】:Im getting an error "Spread types may only be created from object types.ts(2698)" 【发布时间】:2020-06-10 17:59:22 【问题描述】:import Injectable from '@angular/core';
import AngularFirestore from '@angular/fire/firestore';
import map from 'rxjs/operators';
@Injectable(
providedIn: 'root'
)
export class FirestoreDbService
constructor(private db: AngularFirestore)
getBuildList()
// return this.db.collection('Builds').valueChanges();
return this.db.collection('Builds').snapshotChanges().pipe(
map(docArray =>
return docArray.map(doc =>
console.log('==', doc.payload.doc.id);
console.log('$==$', doc.payload.doc.data());
return
id: doc.payload.doc.id,
... doc.payload.doc.data()
)
)
)
在最后一行我得到了错误。我认为这与打字稿有关。任何帮助表示赞赏
【问题讨论】:
检查doc.payload.doc.data()
的返回类型。它不是或不总是一个对象,所以 typescript 确定你不能安全地传播。
【参考方案1】:
使用as
关键字:
... doc.payload.doc.data() as
这将告诉编译器将doc.payload.doc.data()
视为一个对象。
【讨论】:
这是因为严格吗?为什么打字稿会让我们作弊? 我能够通过这个答案摆脱同样的错误。就我而言,我正在将功能组件转换为基于类的组件。谢谢! @kvicera 没问题!以上是关于我收到一个错误“传播类型只能从对象 types.ts(2698) 创建”的主要内容,如果未能解决你的问题,请参考以下文章
Webpack 5 收到 Polyfill 错误?!?!我的 JavaScript React 项目在尝试编译我的 webpack.config.js 文件时收到一个 polyfill 错误