我正在使用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) –