我正在使用一个不是用 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/