javascript - 更新到 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.result
是string | ArrayBuffer
,它表示不能将其分配给 a string
。如何将string | ArrayBuffer
type 转换为string
?
解决方案
虽然result
有可能返回一个字符串,但它不能将其隐式转换为字符串,因为存在数据丢失的风险。即ArrayBuffer as string
可能导致数据截断(必须测试)。所以你必须明确地将它转换为告诉编译器“我知道我在做什么”。
实现这一目标的 2 种方法是:
(string)fileReader.result;
fileReader.result as string;
伙计们,检查@Malvolio的答案,它更完整。
推荐阅读
- java - springboot弹性搜索日期转换ConversionException
- javascript - React Native - 渲染从 API 获取数据的屏幕时出现“未定义不是对象”错误
- pandas - 提高从压缩文件到数据框的运行时间
- xml - 如何通过主 ID 获取库存项目
- javascript - 在我的网页上自动插入 iframe 有什么用?
- typescript - 无法使用打字稿联合类型调用 Array.every()
- android - 一个 RenderFlex 在底部溢出了 99241 个像素并且在空值上使用了空检查运算符
- tree - 由于我们需要访问一个节点两次,DFS 时间复杂度是多少?
- github - 在 github 拉取请求上显示 ConcourseCI 构建状态
- mongodb - 在插入 MongoDB 之前应该编写什么查询来检查约束?