我收到一个错误“传播类型只能从对象 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) 创建”的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到的 jwt 格式错误?

我想在进行更新查询时选择一个表,但我收到错误代码 1093

我收到一个警告错误的 js fiddle 配置

Webpack 5 收到 Polyfill 错误?!?!我的 JavaScript React 项目在尝试编译我的 webpack.config.js 文件时收到一个 polyfill 错误

我收到错误:致命错误:索引超出范围

为啥我收到一个错误,显示模块“多处理”没有属性“sharedctypes”?