Pdf.js: ๊ธฐ๋Šฅ ์š”์ฒญ: Typescript์— ๋Œ€ํ•œ ์œ ํ˜• ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  NPM์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 12์›” 22์ผ  ยท  20์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mozilla/pdf.js

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ Typescript์— ๋Œ€ํ•œ "์œ ํ˜• ์ •์˜"๋ฅผ ์š”์ฒญํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด Typescript ํ”„๋กœ์ ํŠธ์—์„œ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

1-other 2-feature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ™•์‹คํžˆ Typed์—์„œ ํƒ€์ดํ•‘์„ ์‚ฌ์šฉํ•ด ๋ณด์•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋‚˜๋น ์„œ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. (์šธ์ง€ ์•Š๋„๋ก ์›ƒ์–ด)

๋‹ค์Œ์€ ์ตœ์‹  ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค(์ด๋™๋จ): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// 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๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ๊ฒฐ๊ตญ ์“ฐ๋ ˆ๊ธฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ํฌ๊ธฐํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ Typed์—์„œ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฐœํ‘œ๋„ ์—†์ด ํƒ€์ดํ•‘์ด @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์™€ ์ •์˜ ํŒŒ์ผ์„ ๋™๊ธฐํ™” ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ํ›„์ž๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

pdf.d.ts๋Š” src/ ํด๋”์˜ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ pdfjs-dist/build/pdf.js ํŒŒ์ผ์— ๋Œ€ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

"์œ ํ˜• ์„ ์–ธ ํŒŒ์ผ"์„ ๋งŒ๋“  ๊ฒฝํ—˜์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— "์œ ํ˜• ์„ ์–ธ ํŒŒ์ผ"์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ž‘์—…์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

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์— ๋ฐฐ์น˜ํ•  ์ด์œ ๊ฐ€ ์—†์Œ)

์ถ”์‹ : ์ฐจ์ด์ ์€ https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ถ„๋ช…ํžˆ ๊ธฐ์กด NPM ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ "์œ ํ˜• ์„ ์–ธ ํŒŒ์ผ"์„ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์žŠ์—ˆ๋‹ค. @types/์— ๊ฒŒ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ d.ts ํŒŒ์ผ์ด ConfirmTyped ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์–ผ๋งˆ๋‚˜ ์™„์ „ํ•˜๊ฑฐ๋‚˜ ์ •ํ™•ํ•œ์ง€๋Š” ํ™•์ธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ Typed์—์„œ ํƒ€์ดํ•‘์„ ์‚ฌ์šฉํ•ด ๋ณด์•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋‚˜๋น ์„œ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. (์šธ์ง€ ์•Š๋„๋ก ์›ƒ์–ด)

๋‹ค์Œ์€ ์ตœ์‹  ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค(์ด๋™๋จ): https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pdfjs-dist/index.d.ts

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// 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๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ๊ฒฐ๊ตญ ์“ฐ๋ ˆ๊ธฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ํฌ๊ธฐํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ Typed์—์„œ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฐœํ‘œ๋„ ์—†์ด ํƒ€์ดํ•‘์ด @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ํ•˜์„ธ์š”. ๋˜ํ•œ ์ด๋ฅผ ์œ„ํ•œ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋ฌธ์„œํ™” ๋ฐ TypeScript ์ •์˜ ์ƒ์„ฑ์„ ์œ„ํ•ด JSDoc ์ฃผ์„์„ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ์ดํ‹€ ์ „์— ๋„์ฐฉํ•œ #11235์™€ 6์ผ ์ „์— ๋„์ฐฉํ•œ #11209๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ง€๊ธˆ ์œ ํ˜• ์„ ์–ธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

10575๊ฐ€ ๋‹ค์‹œ ์ž‘์—…๋˜์—ˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด TypeScript ์ •์˜๋ฅผ ์ œ๊ณตํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ #12102์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ์†”๋ฃจ์…˜์œผ๋กœ ์ˆ˜๋ ดํ•˜๋Š” ๋ฐ ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์„ฑ์›์˜ ๋…ธ๋ ฅ ๋•๋ถ„์— ์ด์ œ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ–ฅํ›„ pdfjs-dist ๋ฆด๋ฆฌ์Šค๋Š” JSDoc ์ฃผ์„์—์„œ ์ƒ์„ฑ๋œ TypeScript ์ •์˜๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋” ๋‚˜์€ API ๋ฌธ์„œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์˜ JSDoc ์ฃผ์„์—์„œ ์ƒ์„ฑ๋œ ๋” ๋‚˜์€ ์œ ํ˜•์„ ์œ„ํ•ด API ๋ฌธ์„œ๋ฅผ ๋”์šฑ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰