【问题标题】:How to write a Typescript class definition for a module如何为模块编写 Typescript 类定义
【发布时间】:2017-02-10 14:43:45
【问题描述】:

我想为此模块编写一个 Typescript 定义文件 (.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()添加一个可选的回调参数。

我该怎么做?

【问题讨论】:

    标签: javascript node.js canvas typescript


    【解决方案1】:

    这样的方法可以用于实例化类,而不必每次使用 new 时都指定模块名称:

    /// <reference path="./canvas.d.ts" />
    import Canvas1 = Canvas.Canvas;
    
    var canvas = new Canvas1(32, 32);
    

    【讨论】:

      猜你喜欢
      • 2012-03-07
      • 2017-07-12
      • 2019-02-12
      • 1970-01-01
      • 2021-10-27
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      相关资源
      最近更新 更多