2016-10-02 12 views
1

Я хочу написать файл определение Машинописи (.d.ts) для этого модуля https://www.npmjs.com/package/canvas
Как написать определение машинописи класса для модуля

Так вот, что я начал с:

declare module Canvas { 
    class Canvas { 
     constructor(width: number, height: number); 
    } 
} 

declare module "canvas" { 
    export = Canvas; 
} 

Это работает, когда я импортировать & вызвать модуль следующим образом:

/// <reference path="./canvas.d.ts" /> 
import * as Canvas from "canvas"; 
new Canvas.Canvas(32, 32) 

Однако, я хочу, чтобы вызвать класс, как это:

new Canvas(32, 32) 

Я также хочу добавить две вещи к классу:

  • Он должен вернуть HTMLCanvasElement так Он может работать так же, как нормальный Canvas API
  • Я также хочу добавить .Image свойство к модулю, доступному без построения класса.

Вот пример того, что я жду:

import * as Canvas from "canvas"; 
var Image = Canvas.Image; 
var canvas = new Canvas(32, 32); 
var ctx = canvas.getContext('2d'); 

ctx.drawImage and every regular functions... 
[...] 

Я также хочу добавить дополнительный параметр обратного вызова canvas.toDataURL().

Как я могу это сделать?

ответ

0

Что-то, как это будет работать для инстанцирования класса без указания имени модуля каждый раз, когда вы используете новый:

/// <reference path="./canvas.d.ts" /> 
import Canvas1 = Canvas.Canvas; 

var canvas = new Canvas1(32, 32); 
Смежные вопросы