javascript - typescript - 在没有构造函数的情况下扩展类定义

标签 javascript backbone.js typescript

我正在使用一个不是用 TypeScript 编写的库,因此我必须使用定义文件。

在这个定义文件中有一个没有构造函数的类(因为原始 JS 代码没有构造函数)。如果我尝试在我的代码中扩展类,我会收到错误消息:

Error:(36, 2) TS2377: Constructors for derived classes must contain a 'super' call.

如果我将 super() 添加到构造函数,JavaScript 会报错:

Uncaught TypeError: _super.call is not a function

我怎样才能修改定义文件,使这段代码有效,并消除来自 TS 的第一个错误? (对于 TypeScript 1.6)


这是定义文件的一个简单示例(基于 backbone-global.d.ts :

declare module Backbone {
    class Events {
        on(eventName: string, callback?: Function, context?: any): any;
        off(eventName?: string, callback?: Function, context?: any): any;
    }

    class ModelBase extends Events {
    ...
    }

    class Router extends Events {
    ...
    }
}

在我的代码中,我有类似的东西:

/// <reference path="libs/typescript/backbone/backbone.d.ts" />

class RosApiManager extends Backbone.Events {

    constructor() {
        super();
    }
}

最佳答案

Backbone.events 不是一个类(并且不应该在 .d.ts 文件中这样声明)。你不能扩展不是类的东西。

关于javascript - typescript - 在没有构造函数的情况下扩展类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33174309/

相关文章:

javascript - Backbone 集合验证

events - 如何使用 Backbone 处理输入文本 "paste"事件

javascript - Backbone.js 删除事件未触发

javascript - 我们必须在 typescript 中使用 "this"关键字吗?

angular - 如何在 Angular 中显示分组数组?

javascript - 将图像粘贴到富文本中(如 gmail)

javascript - 缩放 div 内容以适应固定大小

reactjs - 从 styled-component 推断 Prop 接口(interface)

javascript - 遍历字符串中的数字

javascript - 禁用浏览器的垂直和水平滚动条