Pdf.js: Permintaan fitur: Tambahkan definisi tipe untuk TypeScript dan sediakan di NPM.

Dibuat pada 22 Des 2016  ·  20Komentar  ·  Sumber: mozilla/pdf.js

Saya ingin meminta "definisi tipe" untuk TypeScript untuk perpustakaan ini. Akan sangat bagus untuk menggunakan perpustakaan ini di proyek TypeScript saya.

Terima kasih.

1-other 2-feature

Komentar yang paling membantu

Saya mencoba menggunakan pengetikan dari PastiTyped tetapi mereka sangat buruk sehingga menggelikan. (tertawa agar kamu tidak menangis)

Ini adalah pengetikan terbaru (mereka dipindahkan): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Inilah cara Anda menggunakannya:

// imports typings first
import { PDFJSStatic, PDFDocumentProxy, PDFPromise } from 'pdfjs-dist';

// then import the actual library using require() instead of import
let pdfjs: PDFJSStatic = require("pdfjs-dist");

// only then you can actually do something useful
pdfjs.getDocument('helloworld.pdf').then(function (pdf: PDFDocumentProxy ) {
  let pageNum = 1;
  renderPage(pdf, pageNum);
});

Apakah Anda melihat bagaimana Anda harus mengimpor tipe PDFJSStatic imajiner dan kemudian menginisialisasi variabel tipe itu menggunakan require() ? Itu omong kosong. (Tidak ada pelanggaran untuk penulis asli)

Silakan buka kembali masalah ini karena ada kebutuhan untuk pengetikan kualitas yang lebih baik untuk pdfjs. Lihat saja beberapa pertanyaan SO ini:

Saya pikir kebanyakan orang yang mencoba menggunakan pdf.js dalam aplikasi TypeScript akhirnya menulis kode omong kosong atau menyerah dan mencoba yang lain. Itu tidak membantu bahwa pengetikan dipindahkan dari @types/pdf ke @types/pdfjs-dist tanpa pemberitahuan apa pun dari PastiTyped.

Jadi sungguh, akan JAUH lebih baik untuk pengembang TypeScript di mana pun jika paket pdfjs-dist memiliki pengetikan mandiri dan berkualitas tinggi.

Semua 20 komentar

Bisakah Anda menjelaskan sedikit tentang apa ini sebenarnya? Mengapa Anda tidak dapat menggunakannya dalam proyek TypeScript sekarang dan seberapa besar perubahan ini?

Dimungkinkan untuk membuat ulang file definisi dari display/api.js, dan akan lebih mudah bagi orang yang sudah melakukannya. Kami akan mengadaptasi gaya dari https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html . Masalahnya adalah menjaga file api.js dan definisi tetap sinkron tetapi akan lebih mudah setelah yang terakhir dibuat.

Perhatikan bahwa pdf.d.ts harus dibuat untuk file pdfjs-dist/build/pdf.js dan bukan file dalam folder src/.

Saya tidak yakin berapa banyak pekerjaan untuk membuat "ketik file deklarasi" karena saya sendiri tidak memiliki pengalaman membuat "file deklarasi tipe".

Saya pikir Anda dapat menggunakan perpustakaan Javascript pihak ketiga di TypeScript tanpa "ketik file deklarasi", tetapi ketika "ketik file deklarasi" tersedia, Anda bisa menjadi kaya intellisense saat menggunakan perpustakaan pihak ketiga.

https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html adalah sumber yang bagus untuk mulai belajar tentang "jenis file deklarasi".

Saya lebih suka jika Anda juga dapat membuat "jenis file deklarasi" tersedia di NPM. Itu membuatnya mudah untuk memasukkan mereka ke dalam sebuah proyek.

Misalnya dengan menggunakan perintah berikut: npm install @types/pdfjs-dist --save-dev

Menerbitkannya melalui "@types/" adalah salah satu cara untuk melakukannya dan biasanya dilakukan oleh kontributor pihak ketiga. Jika kami berkomitmen untuk menyertakan dukungan untuk file .d.ts, maka file tersebut dapat dimasukkan dalam manifes package.json pdfjs-dist (tidak ada alasan untuk menempatkannya ke dalam paket npm terpisah afaik)

PS Lihat https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html untuk perbedaannya.

Rupanya, Anda dapat menggabungkan "jenis file deklarasi" bersama dengan paket NPM yang sudah ada. Saya lupa tentang itu. Tidak perlu mempublikasikannya ke @types/

Ada file d.ts di repo Pasti Ketik untuk ini:

Saya belum memeriksa seberapa lengkap atau akuratnya, tetapi ini mungkin merupakan titik awal yang baik.

Saya mencoba menggunakan pengetikan dari PastiTyped tetapi mereka sangat buruk sehingga menggelikan. (tertawa agar kamu tidak menangis)

Ini adalah pengetikan terbaru (mereka dipindahkan): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Inilah cara Anda menggunakannya:

// imports typings first
import { PDFJSStatic, PDFDocumentProxy, PDFPromise } from 'pdfjs-dist';

// then import the actual library using require() instead of import
let pdfjs: PDFJSStatic = require("pdfjs-dist");

// only then you can actually do something useful
pdfjs.getDocument('helloworld.pdf').then(function (pdf: PDFDocumentProxy ) {
  let pageNum = 1;
  renderPage(pdf, pageNum);
});

Apakah Anda melihat bagaimana Anda harus mengimpor tipe PDFJSStatic imajiner dan kemudian menginisialisasi variabel tipe itu menggunakan require() ? Itu omong kosong. (Tidak ada pelanggaran untuk penulis asli)

Silakan buka kembali masalah ini karena ada kebutuhan untuk pengetikan kualitas yang lebih baik untuk pdfjs. Lihat saja beberapa pertanyaan SO ini:

Saya pikir kebanyakan orang yang mencoba menggunakan pdf.js dalam aplikasi TypeScript akhirnya menulis kode omong kosong atau menyerah dan mencoba yang lain. Itu tidak membantu bahwa pengetikan dipindahkan dari @types/pdf ke @types/pdfjs-dist tanpa pemberitahuan apa pun dari PastiTyped.

Jadi sungguh, akan JAUH lebih baik untuk pengembang TypeScript di mana pun jika paket pdfjs-dist memiliki pengetikan mandiri dan berkualitas tinggi.

@StevenLiekens benar sekali. File definisi tipe @types/pdfjs-dist adalah TRAGEDY . Itu bahkan tidak memiliki GlobalWorkerOptions . Apakah sesulit itu bagi Mozilla untuk menyediakan file definisi tipe untuk proyek ini? Kami mengharapkan lebih dari Mozilla.

Menabrak ini. @types/pdfjs-dist bahkan tidak bisa digunakan.

Berjuang melalui @types/pdfjs-dist juga. Tidak ada rendering lapisan teks di dalamnya. Saya telah menggunakan untuk menambah modul melalui penggabungan deklarasi:

declare module "pdfjs-dist" {
    export interface TextLayerRenderTask extends PDFLoadingTask<void> { }
    export interface RenderTextLayerOptions {
        textContent: TextContent;
        viewport: PDFPageViewport;
        container: HTMLElement;
    }
    export function renderTextLayer(options: RenderTextLayerOptions): TextLayerRenderTask;
}

@SandyGifford ya... jenis script pdf.js tampaknya sangat sangat basi.

Jika saya mengirimkan PR, bisakah kami mendapatkan dukungan resmi ini? APInya tidak terlalu sulit.

Ini benar-benar sangat sangat sangat dibutuhkan. pdf.js bagus/fungsional tetapi API pada dasarnya tidak didokumentasikan. Ini BENAR-BENAR perlu diperbaiki.

+1, kami membutuhkan definisi tipe yang tepat!

Harap beri +1 pada komentar teratas daripada membalas sehingga lebih mudah bagi kami untuk mengukur minat dari komunitas. Selain itu, pekerjaan untuk ini sedang berlangsung; lihat #11235 yang mendarat dua hari lalu dan #11209 yang mendarat enam hari lalu, keduanya untuk meningkatkan komentar JSDoc untuk dokumentasi yang lebih baik dan pembuatan definisi TypeScript.

Apakah seseorang sedang mengerjakan menulis file deklarasi tipe sekarang?

10575 telah dikerjakan lagi, dan kami telah memutuskan bahwa itulah cara kami ingin memberikan definisi TypeScript.

Diperbaiki dengan permintaan tarik #12102. Butuh waktu cukup lama untuk menemukan solusi yang dapat dipertahankan dan diuji, tetapi berkat kerja keras dari anggota komunitas, hal itu selesai sekarang. Rilis pdfjs-dist akan mulai mengirimkan definisi TypeScript seperti yang dihasilkan dari komentar JSDoc kami.

Kami terbuka untuk kontribusi dari komunitas untuk meningkatkan dokumentasi API kami lebih jauh, tidak hanya untuk dokumentasi API yang lebih baik tetapi juga untuk tipe yang lebih baik karena keduanya dihasilkan dari komentar JSdoc di file.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat