我想为此模块https://www.npmjs.com/package/canvas编写一个Typescript定义文件(.d.ts)。

所以这是我开始的:

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()添加一个可选的回调参数。

我怎样才能做到这一点?

最佳答案

这样的事对于实例化类是有用的,而不必在每次使用new时都指定模块名称:

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

var canvas = new Canvas1(32, 32);

09-20 22:41