Pdf.js: 功能请求:为 Typescript 添加类型定义并使其在 NPM 上可用。

创建于 2016-12-22  ·  20评论  ·  资料来源: mozilla/pdf.js

我想为这个库的 Typescript 请求“类型定义”。 在我的 Typescript 项目中使用这个库会很棒。

谢谢。

1-other 2-feature

最有用的评论

我尝试使用来自绝对类型的打字,但它们太糟糕了,可笑。 (笑所以你不哭)

这些是最新的类型(它们被移动了): https :

以下是您将如何使用它们:

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

您是否知道如何导入虚构的PDFJSStatic类型,然后使用require()初始化该类型的变量? 那完全是胡说八道。 (无意冒犯原作者)

请重新打开此问题,因为需要为 pdfjs 提供更高质量的类型。 只需看看其中的一些 SO 问题:

我认为大多数尝试在 TypeScript 应用程序中使用 pdf.js 的人最终会编写垃圾代码,或者只是放弃并尝试其他方法。 在没有来自绝对类型的任何公告的情况下,类型从@types/pdf@types/pdfjs-dist并没有帮助。

所以真的,如果pdfjs-dist包具有自包含的高质量类型,那么对于世界各地的 TypeScript 开发人员来说会好得多。

所有20条评论

你能详细说明一下这到底是什么吗? 为什么现在不能在 TypeScript 项目中使用它,这种变化有多大?

可以从 display/api.js 重新创建定义文件,对于已经这样做过的人来说会更容易。 我们将从https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html调整样式。 一个问题是保持 api.js 和定义文件同步,但在后者创建后会更容易。

请注意,应为 pdfjs-dist/build/pdf.js 文件而不是 src/ 文件夹中的文件创建 pdf.d.ts。

我不确定制作“类型声明文件”需要多少工作,因为我自己没有创建“类型声明文件”的经验。

我认为您可以在没有“类型声明文件”的情况下在 Typescript 中使用第三方 Javascript 库,但是当“类型声明文件”可用时,您可以在使用第三方库的同时获得丰富的智能感知。

https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html是开始学习“类型声明文件”的好资源。

我希望您也可以在 NPM 上提供“类型声明文件”。 这使得将它们包含在项目中变得容易。

例如使用以下命令: npm install @types/pdfjs-dist --save-dev

通过“@types/”发布它们是一种方法,通常由第三方贡献者制作。 如果我们承诺包含对 .d.ts 文件的支持,那么它们可以包含在 pdfjs-dist 的 package.json 清单中(没有理由将它们放入单独的 npm 包 afaik)

PS 请参阅 https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html 了解差异。

显然,您可以将“类型声明文件”与现有的 NPM 包捆绑在一起。 我忘记了。 无需将它们发布到@types/

在确定类型存储库中有一个 d.ts 文件:绝对类型 pdf.js

我没有检查它的完整性或准确性,但它可能是一个很好的起点。

我尝试使用来自绝对类型的打字,但它们太糟糕了,可笑。 (笑所以你不哭)

这些是最新的类型(它们被移动了): https :

以下是您将如何使用它们:

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

您是否知道如何导入虚构的PDFJSStatic类型,然后使用require()初始化该类型的变量? 那完全是胡说八道。 (无意冒犯原作者)

请重新打开此问题,因为需要为 pdfjs 提供更高质量的类型。 只需看看其中的一些 SO 问题:

我认为大多数尝试在 TypeScript 应用程序中使用 pdf.js 的人最终会编写垃圾代码,或者只是放弃并尝试其他方法。 在没有来自绝对类型的任何公告的情况下,类型从@types/pdf@types/pdfjs-dist并没有帮助。

所以真的,如果pdfjs-dist包具有自包含的高质量类型,那么对于世界各地的 TypeScript 开发人员来说会好得多。

@StevenLiekens是绝对正确的。 类型定义文件@types/pdfjs-dist是一个TRAGEDY 。 它甚至没有GlobalWorkerOptions 。 Mozilla 为这个项目提供类型定义文件有那么难吗? 我们对 Mozilla 的期望更高。

撞这个。 @types/pdfjs-dist甚至不接近可用。

也在@types/pdfjs-dist挣扎。 没有任何文本层渲染在其中。 我已经通过声明合并来扩充模块:

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是的...... pdf.js 打字稿类型似乎非常陈旧。

如果我发送 PR,我们可以获得官方支持吗? API 并不难。

这真的真的真的真的很需要。 pdf.js 很棒/功能强大,但 API 基本上没有记录。 这真的需要纠正。

+1,我们需要正确的类型定义!

请为最高评论 +1 而不是回复,以便我们更容易衡量社区的兴趣。 此外,这方面的工作正在进行中; 请参阅两天前登陆的 #11235 和六天前登陆的 #11209,两者都是为了改进 JSDoc 注释以获得更好的文档和 TypeScript 定义生成。

现在有人正在编写类型声明文件吗?

10575 再次被处理,我们决定这就是我们想要提供 TypeScript 定义的方式。

由拉取请求 #12102 修复。 收敛到既可维护又经过测试的解决方案需要相当长的时间,但由于社区成员的辛勤工作,现在已经完成。 未来的pdfjs-dist版本将开始发布从我们的 JSDoc 注释中生成的 TypeScript 定义。

我们对社区的贡献持开放态度,以进一步改进我们的 API 文档,不仅是为了更好的 API 文档,而且为了更好的类型,因为它们都是从文件中的 JSDoc 注释生成的。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

dmisdm picture dmisdm  ·  3评论

PeterNerlich picture PeterNerlich  ·  3评论

smit-modi picture smit-modi  ·  3评论

BrennanDuffey picture BrennanDuffey  ·  3评论

liuzhen2008 picture liuzhen2008  ·  4评论