Дополнить класс новыми свойствами, экспортируемыми с помощью export = MyClass - PullRequest
1 голос
/ 24 марта 2019

Я написал плагин jspdf-autotable для jspdf .Jspdf экспортирует класс jsPDF, который я хочу дополнить новым методом autoTable, как только пользователь импортирует мой плагин.При чтении раздела расширения модуля в Объявление слияния кажется, что должно работать следующее:

// 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 для разрешения плагинов, подобных этому (официально поддерживается )?

...