我正在尝试使用FileSaver保存文件,因此需要Blob格式。我的应用程序是用打字稿编写的。
当我尝试做
import * as Blob from "blob";
我收到了错误
Could not find a declaration file for module 'blob'. '/Users/path/to/project/node_modules/blob/index.js' implicitly has an 'any' type.
Try \npm install @types/blob` if it exists or add a new declaration (.d.ts) file containing `declare module 'blob';``
我不能只导入'blob',因为@types/blob
包不存在。
我用这些内容创建了一个声明文件blob.d.ts
declare module 'blob' {
function Blob(blobParts[, options]): any
export = Blob
}
基于MDN entry on the Blob constructor
这并不能解决我需要Blob用于的一行代码的问题
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
它返回了以下错误
Argument of type '{ type: string; }' is not assignable to parameter of type '[any, any]'. Object literal may only specify known properties, and 'type' does not exist in type '[any, any]'.
此similar question不是重复的,它的答案也无济于事,因为该声明文件未声明模块且不导出任何内容。
答案 0 :(得分:2)
在您的tsconfig.json
中,确保在webworker
数组中包含lib
:
{
"compilerOptions": {
...
"lib": ["webworker"],
...
},
...
}
即使从上面提供的参考链接中应该已经很明显,lib.webworker.d.ts
仍包含Blob
和相关接口所必需的声明。
interface Blob {
readonly size: number;
readonly type: string;
slice(start?: number, end?: number, contentType?: string): Blob;
}
declare var Blob: {
prototype: Blob;
new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;
};