私は、TypeScriptを使ってAngular(1.4.9)アプリケーションを開発しています。私は$ httpの投稿をしており、登録ページの成功または失敗の警告をトリガする方法を使用しています。 「私はのようだ、その後「提供されたパラメータがコールターゲットのシグネチャと一致しません」とはどういう意味ですか?
public showAlert(alertType: string, alertTitle: string, alertMessage: string, alertTimeout: number): void {
this.alertShow = true;
this.alertType = alertType;
this.alertTitle = alertTitle;
this.alertMessage = alertMessage;
this.alertTimeout = alertTimeout;
}
public postIt(): void {
that: any = this; // <-- See, I know what I'm doing.
var url: string = "/";
var user: any = {};
this.$http.post(url, user)
.then((data: any) => {
that.showAlert("success", "Yes!", "You are registered.");
})
.catch((err: any) => {
that.showAlert("warning", "Embarrassing...", "Problem on our end. Try again, later.");
});
}
しかし、ISNは:私は、アラートをトリガーするために使用していますので、一般的に、私はのような何かをするだろう方法の文脈で合格しなければならないことに気づきましたTypeScriptは、私がやっていることを知るのに十分にスマートです。ここでは、矢印機能が私のためにこれを処理していませんか?だから、私はそれを回します:
public postIt(): void {
// var that: any = this; <-- Boom! ...Commented out!
var url: string = "/";
var user: any = {};
this.$http.post(url, user)
.then((data: any) => {
// it doesn't like the "this"
this.showAlert("success", "Yes!", "You are registered.");
})
.catch((err: any) => {
// it doesn't like the "this"
this.showAlert("warning", "Embarrassing...", "Problem on our end. Try again, later.");
});
}
私はかなりスマートだと思います。 TypeScriptは協力します。私は解釈されたJavaScriptをチェックして、それが思ったようにしています:
myClass.prototype.postIt = function() {
// var that: any = this;
var _this = this;
var url = "/";
var user = {};
this.$http.post(url, user)
.then(function (data) {
_this.showAlert("success", "Yes!", "You are registered.");
})
.catch(function (err) {
_this.showAlert("warning", "Embarrassing...", "Problem on our end. Try again, later.");
});
...そして私のアプリケーションはうまくいきます。しかし、コンパイラは私にエラーを投げます: "TS2346:提供されたパラメータが呼び出しターゲットのシグネチャと一致しません。"状況を考えて、私は方法を見つけることができないようにそれを読んでみたい。私がそれを元の方法で持っているとき、それはこの苦情をしません。このエラーの内容を正確に説明できますか?なぜこのエラーはコンパイルを妨げないのですか?
Ah-ha!私は知っていたはずです...それはエラーを解決するが、私はその種の問題があった場合、コンパイラが動作しないことを読んだ(明らかに、それは)、そして、なぜ、コンパイラはエラーをキャッチしていない私が 'that = this'を使用していたとき(明らかに、そうではありません)? –