我正在使用一种不是用TypeScript编写的库,因此我必须使用定义文件。
在该定义文件中,有一个没有构造函数的类(因为原始JS代码没有构造函数)。如果我尝试在我的代码中扩展该类,则会出现错误:
错误:(36,2)TS2377:派生类的构造函数必须包含'super'调用。
如果我将
未捕获的类型错误:_super.call不是函数
我该如何修改定义文件以使此代码起作用并消除来自TS的第一个错误? (适用于TypeScript 1.6)
这是一个简单的定义文件示例(基于backbone-global.d.ts):
在该定义文件中,有一个没有构造函数的类(因为原始JS代码没有构造函数)。如果我尝试在我的代码中扩展该类,则会出现错误:
错误:(36,2)TS2377:派生类的构造函数必须包含'super'调用。
如果我将
super()
添加到构造函数中,JavaScript会抱怨:未捕获的类型错误:_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();
}
}
ModelBase
和Router
仍然需要以某种方式继承Events
中的方法... - Stefan Profanter_super.call(this);
语句,当我们真的不想调用它时...或者我们应该修复Backbone.d.ts文件来解决这个问题:( - Frédéric Camblor