node.js - Typescript'e Blob'u nasıl eklerim?


FileSaver ile bir dosya kaydetmeye çalışıyorum, bu da sonuç olarak bir Blob formatına ihtiyaç duyuyor. Uygulamam TypeScript ile yazılıyor.

Yapmayı denediğimde

import * as Blob from "blob";

Hata aldım

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';``

Sadece 'blob'u içe aktaramam çünkü @types/blob paketi mevcut değil.

Bu içeriğe sahip blob.d.ts adında bir beyan dosyası oluşturdum

declare module 'blob' {
  function Blob(blobParts[, options]): any
  export = Blob
}

Blob yapıcısı üzerine MDN girişine dayanarak

Bu, Blob'a ihtiyacım olan tek satır kod için sorunumuzu çözmedi

var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});

aşağıdaki hatayı döndürdü

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]'.

Bu benzer soru bir kopya DEĞİLDİR ve cevabı bana yardımcı olmuyor çünkü o deklarasyon dosyası herhangi bir modül beyan etmiyor ve hiçbir şey ihraç etmiyor.

Cevap #1

tsconfig.json dosyanızda, lib dizininde webworker dahil ettiğinizden emin olun:

{
  "compilerOptions": {
    ...
    "lib": ["webworker"],
    ...
  },
  ...
}

Yukarıda verilen referans bağlantılarından zaten açıkça anlaşılması gerekse de, lib.webworker.d.ts, Blob ve ilgili arayüzler için gerekli bildirimleri içermektedir.

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;
};

İlgili makaleler