我为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)?