typescript - 在没有构造函数

时间:2015-10-16 15:33:39

标签: javascript backbone.js typescript

我使用的是一个没有用TypeScript编写的库,因此我使用了定义文件。

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

  

错误:(36,2)TS2377:派生类的构造函数必须包含a   '超'调用

如果我将super()添加到构造函数中,JavaScript会抱怨:

  

未捕获的TypeError:_super.call不是函数

如何修改定义文件以使此代码有效并消除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();
    }
}

2 个答案:

答案 0 :(得分:2)

Backbone.events不是类(并且不应在.d.ts文件中声明为此类)。你不能扩展不属于某个类的东西。

答案 1 :(得分:0)

有些可能会出错:

  

_super.call不是函数

如果他们错误地定义了此类,例如

export class InlineIf extends React{... }

代替

export class InlineIf extends React.Component {... }

将此添加为答案,希望将来有人会发现它有用...