【发布时间】:2017-05-08 23:08:22
【问题描述】:
class TableController {
constructor(public x,public y){}
}
class Table {
public controller = TableController;
}
class SquareTableController extends TableController{
constructor(public x, public y, public z){
super(x,y);
/* do other stuff with z */
}
}
class SquareTable extends Table{
public controller = SquareTableController;
}
TypeScript 给我上述代码的以下错误:
TS2415: Class "SquareTable" incorrectly extends base class "Table".
Types of property "controller' are incompatible.
Type 'typeof SquareTableController' is not assignable to type 'typeof TableController'.
注意 SquareTableController 在其构造函数中有一个额外的参数。
如何在 TypeScript 中进行这样的继承设置?我很确定我在 C# 和 Java 中做过非常相似的事情。
有游乐场here
【问题讨论】:
-
你到底想在这里做什么?您是否打算引用类 (
controller = TableController) 而不是实例 (controller = new TableController())? -
@NitzanTomer,是的,我故意引用类,而不是类的实例。这是创建 AngularJS 组件时的标准约定
-
你的代码在操场上编译得很好。
-
嗯。在操场上为我编译也很好。让我比较一下我项目中的原始版本。 .
-
现在正在调查。我认为这可能是因为我的 SquareTableController 的构造函数可能与我的 TableController 的构造函数不同
标签: javascript angularjs oop typescript