用export = MyClass导出的新属性增强类

时间:2019-03-24 20:58:46

标签: typescript jspdf jspdf-autotable typescript-declarations

我为jspdf-autotable写了一个插件jspdf。用户导入我的插件后,Jspdf将导出一个类jsPDF,我想用一个新的autoTable方法来增强该类。阅读Declaration Merging中的模块扩充部分,看来以下方法应该可行。

// Existing index.d.ts for jspdf
// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jspdf/index.d.ts
declare module 'jspdf' {
  class jsPDF {
    constructor(orientation?: any);

    setPage(n:number):jsPDF;
    save(filename:string):jsPDF;
    // ...
  }

  namespace jsPDF {}

  export = jsPDF;
}

// Proposed index.d.ts for the plugin jspdf-autotable
import * as jsPDF from 'jspdf';

declare module 'jspdf' {
  export function staticMethod(); // Test

  interface jsPDF {
    autoTable(): jsPDF;
  }
}

// Usage
import * as jsPDF from 'jspdf';
import 'jspdf-autotable';

jsPDF.staticMethod() // This works
let doc = new jsPDF();
doc.autoTable(); // This gives error: Property 'autoTable' does not exist on type
doc.save('table.pdf');

但是找不到autoTable方法。请注意,静态方法由于某些原因而起作用。有没有一种方法可以在不更改jspdf声明的情况下使它起作用?如果没有,我如何更新jspdf声明以允许这样的插件(officially supported)?

0 个答案:

没有答案