TS2322:类型'文件'不能分配给'typeof File'类型。 属性“原型”中缺少类型“文件”。
我收到此错误。我不知道为什么我得到它,我不知道如何解决它。如果有人愿意帮助我,我会非常感激!
我有这个公共类属性:
registry = File;
getRegistryFile函数:
private async getRegistryFile(): Promise<File> {
if (this.files === undefined || this.files.length === 0) {
return Promise.reject('No files where returned from the server.');
}
const registryFileName = await this.createRegistryFileName();
this.files.forEach((element) => {
if (element === registryFileName) {
console.log('File registry found.');
return Promise.resolve(element);
}
});
}
我正在构建的功能:
public WorkInProgress(file: File) {
this.getRegistryFile().then((file) => this.registry = file);
}
答案 0 :(得分:4)
我有这个公共类属性:
registry = File;
这是registry
属性的声明,应该有File
类型吗?那应该是
registry: File;
或者它是一个包含File
类构造函数的属性的初始化?那么它的类型实际上是typeof File
,它不能用作File
的实例。
答案 1 :(得分:2)
请参阅@artem的推荐:registry: File
不是registry = File
另外,你不能从Array.forEach()
返回一个值(你试图返回一个Promise),而是这样做:
private async getRegistryFile(): Promise<File> {
if (this.files === undefined || this.files.length === 0) {
return Promise.reject('No files where returned from the server.');
}
const registryFileName = await this.createRegistryFileName();
for (let element of this.files) { // replaced Array.forEach with for-of loop
if (element === registryFileName) {
console.log('File registry found.');
return Promise.resolve(element);
}
};
return Promise.reject(new Error("File not found"));
}