我想为这个库的 Typescript 请求“类型定义”。 在我的 Typescript 项目中使用这个库会很棒。
谢谢。
你能详细说明一下这到底是什么吗? 为什么现在不能在 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 定义生成。
现在有人正在编写类型声明文件吗?
由拉取请求 #12102 修复。 收敛到既可维护又经过测试的解决方案需要相当长的时间,但由于社区成员的辛勤工作,现在已经完成。 未来的pdfjs-dist
版本将开始发布从我们的 JSDoc 注释中生成的 TypeScript 定义。
我们对社区的贡献持开放态度,以进一步改进我们的 API 文档,不仅是为了更好的 API 文档,而且为了更好的类型,因为它们都是从文件中的 JSDoc 注释生成的。
最有用的评论
我尝试使用来自绝对类型的打字,但它们太糟糕了,可笑。 (笑所以你不哭)
这些是最新的类型(它们被移动了): https :
以下是您将如何使用它们:
您是否知道如何导入虚构的
PDFJSStatic
类型,然后使用require()
初始化该类型的变量? 那完全是胡说八道。 (无意冒犯原作者)请重新打开此问题,因为需要为 pdfjs 提供更高质量的类型。 只需看看其中的一些 SO 问题:
我认为大多数尝试在 TypeScript 应用程序中使用 pdf.js 的人最终会编写垃圾代码,或者只是放弃并尝试其他方法。 在没有来自绝对类型的任何公告的情况下,类型从
@types/pdf
到@types/pdfjs-dist
并没有帮助。所以真的,如果
pdfjs-dist
包具有自包含的高质量类型,那么对于世界各地的 TypeScript 开发人员来说会好得多。