首页 > 解决方案 > 更新到 Angular 7 后出错。'string | 类型的参数 ArrayBuffer' 不可分配给“字符串”类型的参数

问题描述

我将我的项目从 angular 6 升级到 angular 7。我的项目中有一个文件上传组件。升级后出现编译器错误。

onUpload() {
    const fileReader = new FileReader();
    fileReader.onload = () => this.uploadFile(fileReader.result);
    fileReader.readAsText(this.fileToUpload);
}

uploadFile(fileContent: string) {
    //upload
}

在上面的代码中,this.uploadFile(fileReader.result)给出以下错误。

错误 TS2345:类型为“字符串”的参数 | ArrayBuffer' 不可分配给“字符串”类型的参数

的类型fileReader.resultstring | ArrayBuffer,它表示不能将其分配给 a string。如何将string | ArrayBuffertype 转换为string

标签: javascriptangularangular7

解决方案


虽然result有可能返回一个字符串,但它不能将其隐式转换为字符串,因为存在数据丢失的风险。即ArrayBuffer as string可能导致数据截断(必须测试)。所以你必须明确地将它转换为告诉编译器“我知道我在做什么”。

实现这一目标的 2 种方法是:

(string)fileReader.result;
fileReader.result as string;


伙计们,检查@Malvolio的答案,它更完整。


推荐阅读