Pdf.js: Solicitação de recurso: adicione definições de tipo para Typescript e torne-o disponível no NPM.

Criado em 22 dez. 2016  ·  20Comentários  ·  Fonte: mozilla/pdf.js

Eu gostaria de solicitar "definições de tipo" para o Typescript para esta biblioteca. Seria ótimo usar essa biblioteca em meus projetos do Typescript.

Obrigado.

1-other 2-feature

Comentários muito úteis

Tentei usar as tipificações do DefinitelyTyped, mas são tão ruins que chega a ser ridículo. (ria para não chorar)

Estas são as tipificações mais recentes (foram movidas): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Veja como você os usaria:

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

Você vê como você tem que importar um tipo PDFJSStatic imaginário e então inicializar uma variável desse tipo usando require() ? Isso é um absurdo completo. (Sem ofensa ao autor original)

Reabra este problema porque há uma necessidade de digitações de melhor qualidade para pdfjs. Basta dar uma olhada em algumas dessas questões de SO:

Acho que a maioria das pessoas que tenta usar pdf.js em um aplicativo TypeScript acaba escrevendo um código de merda ou simplesmente desiste e tenta outra coisa. Não ajuda que as digitações foram movidas de @types/pdf para @types/pdfjs-dist sem qualquer tipo de anúncio do DefinitelyTyped.

Então, realmente, seria MUITO melhor para desenvolvedores de TypeScript em todos os lugares se o pacote pdfjs-dist tivesse tipificações independentes de alta qualidade.

Todos 20 comentários

Você poderia elaborar um pouco sobre o que é exatamente? Por que você não pode usá-lo em projetos TypeScript agora e qual é o tamanho dessa alteração?

É possível recriar arquivos de definição de display / api.js, e será mais fácil para quem já fez isso. Devemos adaptar o estilo de https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html . Um problema será manter o api.js e os arquivos de definição sincronizados, mas será mais fácil depois que o último for criado.

Observe que pdf.d.ts deve ser criado para o arquivo pdfjs-dist / build / pdf.js e não para arquivos na pasta src /.

Não tenho certeza de quanto trabalho é fazer "arquivos de declaração de tipo" porque não tenho experiência em criar "arquivos de declaração de tipo".

Eu acho que você pode usar bibliotecas Javascript de terceiros no Typescript sem "arquivos de declaração de tipo", mas quando os "arquivos de declaração de tipo" estão disponíveis, você pode obter rich intellisense ao usar bibliotecas de terceiros.

https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html é um bom recurso para começar a aprender sobre "arquivos de declaração de tipo".

Eu preferiria que você também pudesse disponibilizar os "arquivos de declaração de tipo" no NPM. Isso torna mais fácil incluí-los em um projeto.

Por exemplo, usando o seguinte comando: npm install @ types / pdfjs-dist --save-dev

Publicá-los via "@ types /" é uma maneira de fazer isso e geralmente é feito por colaboradores terceirizados. Se estivermos comprometidos em incluir suporte para arquivos .d.ts, eles podem ser incluídos no manifesto package.json do pdfjs-dist (não há razão para colocá-los em pacotes npm separados afaik)

PS Consulte https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html para as diferenças.

Aparentemente, você pode agrupar "arquivos de declaração de tipo" junto com seu pacote NPM já existente. Eu esqueci disso. Não há necessidade de publicá-los em @ types /

Há um arquivo d.ts no repositório DefinitelyTyped para isso: DefinitelyTyped pdf.js

Não verifiquei se ele é completo ou preciso, mas pode ser um bom ponto de partida.

Tentei usar as tipificações do DefinitelyTyped, mas são tão ruins que chega a ser ridículo. (ria para não chorar)

Estas são as tipificações mais recentes (foram movidas): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

Veja como você os usaria:

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

Você vê como você tem que importar um tipo PDFJSStatic imaginário e então inicializar uma variável desse tipo usando require() ? Isso é um absurdo completo. (Sem ofensa ao autor original)

Reabra este problema porque há uma necessidade de digitações de melhor qualidade para pdfjs. Basta dar uma olhada em algumas dessas questões de SO:

Acho que a maioria das pessoas que tenta usar pdf.js em um aplicativo TypeScript acaba escrevendo um código de merda ou simplesmente desiste e tenta outra coisa. Não ajuda que as digitações foram movidas de @types/pdf para @types/pdfjs-dist sem qualquer tipo de anúncio do DefinitelyTyped.

Então, realmente, seria MUITO melhor para desenvolvedores de TypeScript em todos os lugares se o pacote pdfjs-dist tivesse tipificações independentes de alta qualidade.

@StevenLiekens está absolutamente certo. O arquivo de definição de tipo @types/pdfjs-dist é uma TRAGÉDIA . Não tem nem GlobalWorkerOptions . É tão difícil para a Mozilla fornecer um arquivo de definição de tipo para este projeto? Esperamos mais da Mozilla.

Batendo nisso. @types/pdfjs-dist não está nem perto de ser utilizável.

Lutando contra @types/pdfjs-dist também. Nenhuma parte da renderização da camada de texto está nela. Recorri a aumentar o módulo por meio da mesclagem de declarações:

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 sim ... os tipos de texto do pdf.js parecem muito obsoletos.

Se eu enviar um PR, podemos obtê-lo oficialmente apoiado? A API não é tão difícil.

Isso é realmente realmente necessário. pdf.js é ótimo / funcional, mas a API é essencialmente não documentada. Isso REALMENTE precisa ser corrigido.

+1, precisamos de definições de tipo adequadas!

Marque com +1 o comentário principal em vez de responder, para que seja mais fácil avaliar o interesse da comunidade. Além disso, o trabalho para isso está em andamento; consulte o # 11235 que pousou há dois dias e o # 11209 que pousou há seis dias, ambos para aprimorar os comentários JSDoc para melhor documentação e geração de definição de TypeScript.

Alguém está trabalhando na redação de um arquivo de declaração de tipos agora?

10575 foi trabalhado novamente e decidimos que é assim que gostaríamos de fornecer as definições do TypeScript.

Corrigido pela solicitação pull # 12102. Demorou algum tempo para convergir para uma solução que pudesse ser mantida e testada, mas graças ao trabalho árduo dos membros da comunidade, ela está concluída agora. Futuros pdfjs-dist lançamentos começarão a enviar as definições do TypeScript conforme geradas a partir de nossos comentários JSDoc.

Estamos abertos a contribuições da comunidade para melhorar ainda mais nossa documentação de API, não apenas para uma melhor documentação de API, mas também para melhores tipos, uma vez que ambos são gerados a partir dos comentários JSDoc nos arquivos.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

zerr0s picture zerr0s  ·  3Comentários

anggikolo11 picture anggikolo11  ·  3Comentários

BrennanDuffey picture BrennanDuffey  ·  3Comentários

timvandermeij picture timvandermeij  ·  4Comentários

aaronshaf picture aaronshaf  ·  3Comentários