typescript - 是否可以使用现有的 JavaScript 对象作为 TypeScript 中的类型?

标签 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)会知道它正在处理什么类型的对象。

最佳答案

是的,这是可能的。您可以将 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...
}

关于typescript - 是否可以使用现有的 JavaScript 对象作为 TypeScript 中的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18255717/

相关文章:

javascript - 如何将 Promise<string> 分配给 String 类型

javascript - 将 @types 中的类型分配给本地代码?

node.js - 为 Nightmare 延长打字时间

typescript - ko.映射 ||无法读取未定义的属性 'fromJS'

angular - Ionic 使用 IdentityServer4 作为 IDP

javascript - 输入字段上的 Angular 条件只读/禁用

TypeScript 函数重载

javascript - 在 Typescript 中使用 Object.keys 时避免隐式 'any' 类型

javascript - AWS s3重定向到另一个s3存储桶

html - 在 Angular 中使用 HTTP 获取数据