【问题标题】:Angular Error: Type 'Observable<number | undefined>' is not assignable to type 'Observable<number>'角度错误:键入'Observable<number | undefined>' 不可分配给类型 'Observable<number>'
【发布时间】:2022-01-09 03:27:59
【问题描述】:

我正在创建一个将文件上传到 Angular 中的 firebase 存储的服务,但最新版本的 typescript 要求声明更具体,因此它不允许我有一个类型为 number 的变量初始化为 undefined 和尝试获取文件上传百分比时出现以下错误:

键入'可观察的' 不可分配给类型 'Observable'。 输入'号码 | undefined' 不可分配给类型 'number'。 类型 'undefined' 不可分配给类型 'number'.ts(2322)**

这是我的 fileItem 类:

export class FileItem {
    public name: string;
    public uploading: boolean = false;
    public uploadPercent?: Observable<number>;
    public downloadURL?: Observable<string>;

    constructor(public file: File = file) {
        this.name = file.name;
    }

这是我不知道如何修改的代码行:

item.uploadPercent = task.percentageChanges()

完整的功能是:

uploadFiles(folderPath: string, files: FileItem[]) {
    for (const item of files) {
      item.uploading = true;

      const filePath = this.generateFileName(folderPath, item.name);
      const fileRef = this.storage.ref(filePath);
      const task = this.storage.upload(filePath, item.file);

      item.uploadPercent = task.percentageChanges()
      task
        .snapshotChanges()
        .pipe(
          finalize(() => {
            item.downloadURL = fileRef.getDownloadURL();
            item.uploading = false;
          })
        )
        .subscribe();
    }

.percentageChanges() 方法返回以下内容:

percentageChanges(): observable<number | undefined>;

【问题讨论】:

标签: angular typescript firebase-storage


【解决方案1】:

我假设错误来自这一行(如果不是,请添加错误告诉您的代码的确切部分(它告诉您数字行)。

那么...它允许您将 uploadPercent 声明为这样?:

public uploadPercent?: Observable<number|undefined>;

如果是这样,我想通过这个小小的改动你就可以解决错误了。

如果没有,请尝试:

public uploadPercent?: Observable<number|any>;

如果这些解决方案都不起作用,请显示失败的确切代码部分,当返回 'Observable' 强制以某种方式返回 'Observable'

【讨论】:

  • number | any 和不使用类型一样,不要那样做!
猜你喜欢
  • 2019-02-10
  • 2020-08-20
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2023-02-22
  • 2020-08-07
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多