我使用的是一个没有用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();
}
}
答案 0 :(得分:2)
Backbone.events
不是类(并且不应在.d.ts文件中声明为此类)。你不能扩展不属于某个类的东西。
答案 1 :(得分:0)
有些可能会出错:
_super.call不是函数
如果他们错误地定义了此类,例如
export class InlineIf extends React{... }
代替
export class InlineIf extends React.Component {... }
将此添加为答案,希望将来有人会发现它有用...