【发布时间】: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>;
【问题讨论】:
-
这里不应该改一下类型吗? public uploadPercent?: Observable
;
标签: angular typescript firebase-storage