TypeScript报错:{ blobParts: any[] }无法赋值给Blob类型的问题咨询
解决TypeScript中Blob赋值的类型错误问题
嘿,我来帮你搞定这个TypeScript的Blob类型错误!
问题到底出在哪?
你现在的写法是直接用一个包含blobParts属性的对象字面量来赋值给Blob类型变量,但从lib.d.ts里的Blob声明就能看出来:
Blob接口定义的是实例本身拥有的属性和方法(比如size、type、slice()这些),里面根本没有blobParts这个属性blobParts其实是Blob构造函数的入参名称,不是实例会带的属性。构造函数的声明里写的new (blobParts?: any[], ...),意思是调用new Blob()时可以传这个参数,但实例本身不会暴露这个属性
所以TypeScript检查时发现你写的对象字面量有个blobParts属性,而Blob类型并不包含它,自然就报错了。
正确的打开方式
要创建合法的Blob实例,必须用Blob构造函数来初始化,而不是直接写对象字面量。举个例子:
// 先把JSON数据转成Blob支持的字符串格式 const jsonContent = JSON.stringify(content); // 用构造函数创建Blob实例,指定内容和可选的MIME类型 let blob: Blob = new Blob([jsonContent], { type: 'application/json' });
额外提示
- 如果你的
content本身就是Blob支持的类型(比如字符串、ArrayBuffer、TypedArray或者其他Blob实例),可以直接传给构造函数,不用额外转换 - 构造函数的第二个参数
options是可选的,设置type能让Blob带上正确的MIME类型,后续处理(比如下载、上传)时会更顺畅
内容的提问来源于stack exchange,提问作者Raman Gupta
相关产品推荐
相关产品推荐

