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

azetutu picture azetutu  ¬∑  4Coment√°rios

smit-modi picture smit-modi  ¬∑  3Coment√°rios

kleins05 picture kleins05  ¬∑  3Coment√°rios

anggikolo11 picture anggikolo11  ¬∑  3Coment√°rios

zerr0s picture zerr0s  ¬∑  3Coment√°rios