type script 类型参数 '{ type: string[]; }' 不可分配给“BlobPropertyBag”类型的参数

问题描述 投票:0回答:1
  • 我尝试将您的代码集成到我的打字稿代码库中...
  • 我收到这样的错误 [ts] 类型参数 '{ type: string[]; }' 不可分配给“BlobPropertyBag”类型的参数。属性“type”的类型不兼容。类型“string[]”不可分配给类型“string”。 (属性)类型:string[] a t 这一行 ----------------> var csv = "a,b,c 1,2,3 "; 让 data = new Blob([csv], {type: mimeType});
  • 提供以下代码。
  • 样本小提琴,在普通 js 中而不是在打字稿中。
  • 你能告诉我如何解决吗

http://jsfiddle.net/jcqtawad/

let types = ["text/plain", "application/pdf"];

let downloads = health.map(function(version) {
                  let ext = version.mobileVersion.replace(/.*(?=\.\w+)/, "");
                  let mimeType = types.filter(function(type) {
                                   return type.indexOf(ext) > -1
                                 });
                  let data = new Blob([/*  Blob data */], {
                               type: mimeType
                             });
                  return $("<a>", {
                           "class": "sportsDataPlayer",
                           download: ev.FileName + ext,
                           type: mimeType,
                           href: URL.createObjectURL(data),
                           html: ev.FileName
                         });
                });
javascript jquery angularjs typescript kendo-ui
1个回答
0
投票

HTML5 Blob 构造函数仅接受字符串形式的 MIMEtype 值,而不是按照下面的 Blob 构造函数接受

string[]

new Blob(blobParts[, options])

例如,下面的代码可以工作,因为

type
属性的值为
string

let data = new Blob([csv], {type: "text/plain"});

但是在您的代码中,您按照下面的代码将

string[]
分配给
type
属性,其中
mimeType
在使用
filter
后仍然是一个数组。

 let mimeType = types.filter(function(type) {
                                   return type.indexOf(ext) > -1
                                 });

因此您必须像下面一样使用它,因为 MimeType 在通过扩展过滤后应该只包含单个值。

let data = new Blob([/*  Blob data */], {
                               type: mimeType[0]
                             });

查看以下链接以获取有关 Blob 的更多参考

https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob

https://dzone.com/articles/html5-blob-objects-made-easier

© www.soinside.com 2019 - 2024. All rights reserved.