angular - 类型 'arrayBuffer' 上不存在属性 'File'

在 Angular 应用程序中实现文件上传代码时出现类型错误。我正在使用 angular 8 和 typescript 3.5.3。以下是我的代码

模板 <input type="file" id="file" (change)="handleFileInput($event.target.files)">

组件类中的函数

  handleFileInput(files: FileList): void {
    files[0].arrayBuffer().then((value) => {
      console.log(value);
    });
   }

编译时出现这个错误: error TS2339: Property 'arrayBuffer' does not exist on type 'File'.

知道如何摆脱这个错误吗?

最佳答案

出现这个错误,是因为arrayBuffer()stream()text()实际上是在类型定义中缺失的文件/Blob。但这并不是一个忽视,根据 MDN 的说法,这些方法仍然只是工作草案的一部分,并没有得到很好的支持。如果您想修补打字,仍然能够使用 arrayBuffer() 之类的功能而不会出现 typescript 提示,那么您可以使用缺少的属性扩展 File 接口(interface),即:

File {
    arrayBuffer: () => Promise<ArrayBuffer>
}

引用:https://github.com/microsoft/TypeScript/issues/34652

关于angular - 类型 'arrayBuffer' 上不存在属性 'File',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60889795/

相关文章:

angular - self 未在 ionic Angular 服务器端渲染中定义

swift - 分段选择器移除了可访问性

django - 无法在 nginx docker 容器上使用 http2

postgresql - 外键约束问题

spring-boot - 在 spring cloud 配置更新时重新加载 CamelContex

python - 如何在请求中流式传输文件?

node.js - Nodejs 等待不等待

kotlin - 使用 Kotlinx 在 Ktor 中为按钮添加 onClick

reactjs - 相对于箭头键旋转图像 react js

reactjs - AWS 放大自定义问候语