是否可以将现有JavaScript对象用作TypeScript中的类型?

时间:2013-08-15 15:10:10

标签: typescript

我有一个现有的JavaScript对象。我想在TypeScript中使用它作为一种类型,但无法看到任何方法。例如,我有一个像这样的JavaScript对象构造函数:

function Canvas2D(canvas)
{
    var context = canvas.getContext("2d");
    this.clear = function() { context.clearRect(canvas.width, canvas.height); }
    // lots more methods follow...
}

在我的TypeScript中,我想声明一个Canvas2D实例的变量。我可以将它定义为“any”类型,但这并没有给我自动建议,并且否定了使用TypeScript的好处。

class MyApp
{
    private canvas2d: any;
    // I want this instead
    //private canvas2d: Canvas2D;

    constructor(aCanvas) { this.canvas2d = new Canvas2D(aCanvas); }
}

有没有办法在TypeScript中执行此操作?

在JavaScript中,我可以这样做:

var canvas2D = new Canvas2D(aCanvas);

它(Visual Studio)会知道它正在处理什么类型的对象。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。您可以将Canvas2D对象移植到typescript类并引用文件

/// <reference path="Canvas2D.ts" />

在MyApp文件中。

您可以创建一个定义文件(Canvas2D.d.ts)来定义Canvas2D类的形状并改为引用它。

/// <reference path="Canvas2D.d.ts" />

例如:

declare class Canvas2D {
    constructor(elem: HTMLCanvasElement);
    clear();
    // Lots more methods here...
}