我正在使用Typescript写一个MVC应用程序,但我有一些问题。如果我扩展我的BaseController并重写ajaxMethod,那么需要不同的参数,我的编译器会报错。希望可以有人帮帮我。使用不同参数的重写方法扩展Typescript类不可能?
这里是我的代码:
interface i_Controller {
ajaxMethod;
ajaxSuccessListener;
ajaxErrorListener;
}
class BaseController implements i_Controller {
protected baseProperty: boolean;
constructor() {
this.baseProperty = true;
}
public ajaxMethod() {
$.when(
$.ajax({})
).then(
this.ajaxSuccessListener,
this.ajaxErrorListener
)
}
public ajaxSuccessListener(data, status, jqXHR) {
console.log('ajax success');
console.log(data);
};
public ajaxErrorListener(jqXHR, status, error) {
console.error('ajax error');
console.error(status);
};
}
class Page_1_Controller extends BaseController {
private localProperty: number;
constructor(input) {
super();
this.localProperty = input;
}
public ajaxMethod(someProperty) {
/*
/* Error:(39, 7) TS2415:Class 'Page_1_Controller' incorrectly
/* extends base class 'BaseController'.
/* Types of property 'ajaxMethod' are incompatible.
/* Type '(someProperty: any) => void' is not assignable to
/* type '() => void'.
*/
$.when(
$.ajax({
data: {properties: someProperty}
}),
$.ajax({})
).then(
this.ajaxSuccessListener,
this.ajaxErrorListener
)
}
public ajaxSuccessListener(responseAjaxRequest_1, responseAjaxRequest_2) {
console.log('ajax success');
let data_1 = responseAjaxRequest_1[0];
let data_2 = responseAjaxRequest_2[0];
console.log(data_1);
console.log(data_2);
}
}
class MyApp {
private controller: i_Controller;
constructor() {
this.controller = new Page_1_Controller();
/*
/* Error:(72, 27) TS2346:Supplied parameters do not match any
/* signature of call target.
*/
this.controller.ajaxMethod();
}
}
此刻我不知道我在哪里上延长我的课假。构造函数可以在没有任何问题的情况下被覆盖,也可以被监听器覆盖。为什么不是ajaxMethod?
构造函数不能被继承。在你的'Page_1_Controller'类中,你不覆盖基础构造函数,而是编写一个新的构造函数。 –
可能的重复:http://stackoverflow.com/questions/39799195/incorrectly-extends-base-class-static-side-error-when-overriding-static-fi –
可能的重复['...错误地扩展基类静态方'错误时重写派生类中的静态字段](http://stackoverflow.com/questions/39799195/incorrectly-extends-base-class-static-side-error-when-overriding-static-fi) –