Pdf.js: Demande de fonctionnalité : ajoutez des définitions de type pour Typescript et rendez-le disponible sur NPM.

Créé le 22 déc. 2016  ·  20Commentaires  ·  Source: mozilla/pdf.js

Je voudrais demander des "définitions de type" pour Typescript pour cette bibliothèque. Ce serait formidable d'utiliser cette bibliothèque dans mes projets Typescript.

Merci.

1-other 2-feature

Commentaire le plus utile

J'ai essayé d'utiliser les frappes de DefinitelyTyped mais elles sont si mauvaises que c'est risible. (rire pour ne pas pleurer)

Voici les dernières saisies (elles ont été déplacées) : https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Voici comment vous les utiliseriez :

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

Voyez-vous comment vous devez importer un type imaginaire PDFJSStatic puis initialiser une variable de ce type en utilisant require() ? C'est complètement absurde. (Aucune offense à l'auteur original)

Veuillez rouvrir ce problème car des saisies de meilleure qualité sont nécessaires pour les fichiers pdfj. Jetez un œil à quelques-unes de ces questions SO :

Je pense que la plupart des gens qui essaient d'utiliser pdf.js dans une application TypeScript finissent par écrire du code de merde ou abandonnent et essaient autre chose. Cela n'aide pas que les frappes aient été déplacées de @types/pdf à @types/pdfjs-dist sans aucune sorte d'annonce de DefinitelyTyped.

Donc vraiment, ce serait BEAUCOUP mieux pour les développeurs de TypeScript partout si le package pdfjs-dist avait des typages autonomes et de haute qualité.

Tous les 20 commentaires

Pourriez-vous préciser un peu ce que c'est exactement ? Pourquoi ne pouvez-vous pas l'utiliser dans les projets TypeScript pour le moment et quelle est l'ampleur de ce changement ?

Il est possible de recréer des fichiers de définition à partir de display/api.js, et ce sera plus facile pour les personnes qui l'ont déjà fait. Nous adapterons le style de https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html . Un problème sera de garder api.js et les fichiers de définition synchronisés mais ce sera plus facile après la création de ce dernier.

Notez que pdf.d.ts doit être créé pour le fichier pdfjs-dist/build/pdf.js et non pour les fichiers du dossier src/.

Je ne sais pas combien de travail il faut pour créer des "fichiers de déclaration de type" car je n'ai aucune expérience moi-même dans la création de "fichiers de déclaration de type".

Je pense que vous pouvez utiliser des bibliothèques Javascript tierces dans Typescript sans "fichiers de déclaration de type", mais lorsque des "fichiers de déclaration de type" sont disponibles, vous pouvez enrichir intellisense tout en utilisant des bibliothèques tierces.

https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html est une bonne ressource pour commencer à apprendre les "fichiers de déclaration de type".

Je préférerais que vous puissiez également rendre les "fichiers de déclaration de type" disponibles sur NPM. Cela permet de les inclure facilement dans un projet.

Par exemple en utilisant la commande suivante : npm install @types/pdfjs-dist --save-dev

Les publier via "@types/" est une façon de le faire et généralement effectuée par des contributeurs tiers. Si nous nous engageons à inclure la prise en charge des fichiers .d.ts, ils peuvent alors être inclus dans le manifeste package.json de pdfjs-dist (il n'y a aucune raison de les placer dans un package npm séparé, si je ne m'abuse)

PS Voir https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html pour les différences.

Apparemment, vous pouvez regrouper des "fichiers de déclaration de type" avec votre package NPM déjà existant. J'ai oublié cela. Pas besoin de les publier sur @types/

Il y a un fichier d.ts dans le référentiel DefinitelyTyped pour cela : DefinitelyTyped pdf.js

Je n'ai pas vérifié à quel point il est complet ou précis, mais cela pourrait être un bon point de départ.

J'ai essayé d'utiliser les frappes de DefinitelyTyped mais elles sont si mauvaises que c'est risible. (rire pour ne pas pleurer)

Voici les dernières saisies (elles ont été déplacées) : https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Voici comment vous les utiliseriez :

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

Voyez-vous comment vous devez importer un type imaginaire PDFJSStatic puis initialiser une variable de ce type en utilisant require() ? C'est complètement absurde. (Aucune offense à l'auteur original)

Veuillez rouvrir ce problème car des saisies de meilleure qualité sont nécessaires pour les fichiers pdfj. Jetez un œil à quelques-unes de ces questions SO :

Je pense que la plupart des gens qui essaient d'utiliser pdf.js dans une application TypeScript finissent par écrire du code de merde ou abandonnent et essaient autre chose. Cela n'aide pas que les frappes aient été déplacées de @types/pdf à @types/pdfjs-dist sans aucune sorte d'annonce de DefinitelyTyped.

Donc vraiment, ce serait BEAUCOUP mieux pour les développeurs de TypeScript partout si le package pdfjs-dist avait des typages autonomes et de haute qualité.

@StevenLiekens a tout à fait raison. Le fichier de définition de type @types/pdfjs-dist est une TRAGEDIE . Il n'a même pas GlobalWorkerOptions . Est-ce si difficile pour Mozilla de fournir un fichier de définition de type pour ce projet ? Nous attendons plus de Mozilla.

Bouger ça. @types/pdfjs-dist n'est même pas proche d'être utilisable.

Luttant à travers @types/pdfjs-dist aussi. Aucun des rendus de calque de texte n'y est. J'ai eu recours à l'augmentation du module par la fusion des déclarations :

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 oui... les types de scripts pdf.js sont très très périmés, semble-t-il.

Si j'envoie un PR, pouvons-nous l'obtenir officiellement ? L'API n'est pas si difficile.

C'est vraiment vraiment vraiment vraiment nécessaire. pdf.js est génial/fonctionnel mais l'API est essentiellement non documentée. Cela doit VRAIMENT être rectifié.

+1, nous avons besoin de définitions de types appropriées !

Veuillez attribuer +1 au premier commentaire au lieu de répondre afin qu'il nous soit plus facile d'évaluer l'intérêt de la communauté. D'ailleurs, des travaux pour cela sont en cours ; voir #11235 qui a atterri il y a deux jours et #11209 qui a atterri il y a six jours, tous deux pour améliorer les commentaires JSDoc pour une meilleure documentation et la génération de définitions TypeScript.

Quelqu'un travaille-t-il actuellement à la rédaction d'un fichier de déclaration de types ?

10575 a été retravaillé, et nous avons décidé que c'est ainsi que nous aimerions fournir les définitions TypeScript.

Corrigé par pull request #12102. Il a fallu un certain temps pour converger vers une solution à la fois maintenable et testée, mais grâce au travail acharné des membres de la communauté, c'est maintenant chose faite. Les futures versions de pdfjs-dist commenceront à livrer les définitions TypeScript générées à partir de nos commentaires JSDoc.

Nous sommes ouverts aux contributions de la communauté pour améliorer encore plus notre documentation API, non seulement pour une meilleure documentation API, mais aussi pour de meilleurs types car ils sont tous deux générés à partir des commentaires JSDoc dans les fichiers.

Cette page vous a été utile?
0 / 5 - 0 notes