Pdf.js: Solicitud de función: agregue definiciones de tipo para TypeScript y hágalo disponible en NPM.

Creado en 22 dic. 2016  ·  20Comentarios  ·  Fuente: mozilla/pdf.js

Me gustaría solicitar "definiciones de tipo" para TypeScript para esta biblioteca. Sería genial usar esta biblioteca en mis proyectos de TypeScript.

Gracias.

1-other 2-feature

Comentario más útil

Intenté usar los mecanografiados de DefinitelyTyped pero son tan malos que es ridículo. (ríe para que no llores)

Estos son los últimos mecanografiados (se movieron): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Así es como los usaría:

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

¿Ves cómo tienes que importar un tipo PDFJSStatic imaginario y luego inicializar una variable de ese tipo usando require() ? Eso es una completa tontería. (Sin ofender al autor original)

Vuelva a abrir este problema porque se necesitan mecanografiados de mejor calidad para pdfjs. Solo eche un vistazo a algunas de estas preguntas SO:

Creo que la mayoría de las personas que intentan usar pdf.js en una aplicación TypeScript terminan escribiendo un código basura o simplemente se rinden y prueban otra cosa. No ayuda que los mecanografiados se hayan movido de @types/pdf a @types/pdfjs-dist sin ningún tipo de anuncio de DefinitelyTyped.

Entonces, realmente, sería MUCHO mejor para los desarrolladores de TypeScript en todas partes si el paquete pdfjs-dist tuviera mecanografía autónoma de alta calidad.

Todos 20 comentarios

¿Podrías explicar un poco qué es esto exactamente? ¿Por qué no puede usarlo en proyectos de TypeScript en este momento y qué tan grande es este cambio?

Es posible volver a crear archivos de definición desde display / api.js, y será más fácil para la persona que ya lo haya hecho. Adaptaremos el estilo de https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html . Un problema será mantener sincronizados los archivos api.js y de definición, pero será más fácil una vez creado este último.

Tenga en cuenta que pdf.d.ts se creará para el archivo pdfjs-dist / build / pdf.js y no archivos en la carpeta src /.

No estoy seguro de cuánto trabajo es hacer "archivos de declaración de tipo" porque no tengo experiencia en la creación de "archivos de declaración de tipo".

Creo que puede usar bibliotecas de Javascript de terceros en Typecript sin "archivos de declaración de tipo", pero cuando los "archivos de declaración de tipo" están disponibles, puede obtener un intellisense rico mientras usa bibliotecas de terceros.

https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html es un buen recurso para comenzar a aprender sobre los "archivos de declaración de tipos".

Preferiría que también pudiera hacer que los "archivos de declaración de tipo" estén disponibles en NPM. Facilita su inclusión en un proyecto.

Por ejemplo, usando el siguiente comando: npm install @ types / pdfjs-dist --save-dev

Publicarlos a través de "@ tipos /" es una forma de hacerlo y, por lo general, lo hacen colaboradores externos. Si nos comprometemos a incluir soporte para archivos .d.ts, entonces pueden incluirse en el manifiesto package.json de pdfjs-dist (no hay razón para colocarlos en un paquete npm separado afaik)

PD Consulte https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html para conocer las diferencias.

Aparentemente, puede agrupar "archivos de declaración de tipos" junto con su paquete NPM ya existente. Me olvide de eso. No es necesario publicarlos en @ types /

Hay un archivo d.ts en el repositorio DefinitelyTyped para esto: DefinitelyTyped pdf.js

No he comprobado qué tan completo o exacto es, pero podría ser un buen punto de partida.

Intenté usar los mecanografiados de DefinitelyTyped pero son tan malos que es ridículo. (ríe para que no llores)

Estos son los últimos mecanografiados (se movieron): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Así es como los usaría:

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

¿Ves cómo tienes que importar un tipo PDFJSStatic imaginario y luego inicializar una variable de ese tipo usando require() ? Eso es una completa tontería. (Sin ofender al autor original)

Vuelva a abrir este problema porque se necesitan mecanografiados de mejor calidad para pdfjs. Solo eche un vistazo a algunas de estas preguntas SO:

Creo que la mayoría de las personas que intentan usar pdf.js en una aplicación TypeScript terminan escribiendo un código basura o simplemente se rinden y prueban otra cosa. No ayuda que los mecanografiados se hayan movido de @types/pdf a @types/pdfjs-dist sin ningún tipo de anuncio de DefinitelyTyped.

Entonces, realmente, sería MUCHO mejor para los desarrolladores de TypeScript en todas partes si el paquete pdfjs-dist tuviera mecanografía autónoma de alta calidad.

@StevenLiekens tiene toda la razón. El archivo de definición de tipo @types/pdfjs-dist es una TRAGEDIA . Ni siquiera tiene GlobalWorkerOptions . ¿Es tan difícil para Mozilla proporcionar un archivo de definición de tipo para este proyecto? Esperamos más de Mozilla.

Golpeando esto. @types/pdfjs-dist ni siquiera está cerca de ser utilizable.

Luchando por @types/pdfjs-dist también. No hay ninguna representación de la capa de texto en él. He recurrido a aumentar el módulo mediante la fusión de declaraciones:

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 sí ... los tipos de mecanografiado pdf.js parecen muy, muy obsoletos.

Si envío un PR, ¿podemos conseguirlo oficialmente? La API no es tan difícil.

Esto es realmente muy necesario. pdf.js es excelente / funcional, pero la API es esencialmente indocumentada. Esto REALMENTE necesita ser rectificado.

+1, necesitamos definiciones de tipo adecuadas.

Haz +1 en el comentario principal en lugar de responder para que nos sea más fácil medir el interés de la comunidad. Además, se está trabajando para ello; vea # 11235 que aterrizó hace dos días y # 11209 que aterrizó hace seis días, ambos para mejorar los comentarios JSDoc para una mejor documentación y generación de definiciones de TypeScript.

¿Alguien está trabajando en la redacción de un archivo de declaración de tipos en este momento?

Se ha trabajado de nuevo en 10575 y hemos decidido que esa es la forma en que nos gustaría proporcionar las definiciones de TypeScript.

Corregido por solicitud de extracción # 12102. Tomó bastante tiempo converger hacia una solución que se podía mantener y probar, pero gracias al arduo trabajo de los miembros de la comunidad, ya está hecho. Las futuras versiones de pdfjs-dist comenzarán a enviar las definiciones de TypeScript como se generan a partir de nuestros comentarios JSDoc.

Estamos abiertos a las contribuciones de la comunidad para mejorar aún más nuestra documentación de API, no solo para una mejor documentación de API sino también para mejores tipos, ya que ambos se generan a partir de los comentarios JSDoc en los archivos.

¿Fue útil esta página
0 / 5 - 0 calificaciones