この特定のコードをコンパイルする際に問題があります(これはAngular2プロジェクトのものです)。Typescriptコンパイラは角括弧を追加しませんか?
typescriptバージョン2.0.10(npm以降)を使用すると、これは私が得る出力です。
GlobalViewComponent.prototype.reloadRecords = function() {
var _this = this;
var step = (this.timeInterval.max - this.timeInterval.min)/this.recordsChartSteps;
var data = new Array(this.recordsChartSteps);
var labels = new Array(this.recordsChartSteps);
var doneCount = 0;
var done = new core_1.EventEmitter();
done.subscribe(function() {
_this.recordsChartData[0].data = data;
_this.recordsChartLabels = labels;
});
if (this.timeInterval.min == 0)
this.data.getRecordCount(this.timeInterval.min, this.timeInterval.max).subscribe(function (count) {
data[data.length - 1] = count;
labels[labels.length - 1] = "Total";
done.emit();
});
else
var _loop_1 = function(i) {
var min = this_1.timeInterval.min + step * i;
var max = min + step - 1;
this_1.data.getRecordCount(min, max)
.subscribe(function (count) {
data[i] = count;
labels[i] = "De " + new Date(min).toLocaleTimeString() + " à " + new Date(max).toLocaleTimeString();
if (++doneCount >= _this.recordsChartSteps)
done.emit();
});
};
var this_1 = this;
for (var i = 0; i < this.recordsChartSteps; i++) {
_loop_1(i);
}
};
それは有効なJavaScriptコードである、しかしそれは、コンパイラは、他のブロックの内容のために必要なブラケットを追加しなかったようです。
これは、私のTypescriptコードにこれらの括弧を追加していないという事実のためです。else文には1つのブロックが含まれています(括弧は不要です。 。
しかし、Javascriptでは、elseブロック(Typescriptの1つのforループ)が複数のステートメントに出力されます。
indendationも見ることができますが、_loop_1変数を宣言した最初の2つの命令は、このelseブロックにも含める必要があります。
明らかに、私のTypescriptコードに角括弧を追加するだけで問題を解決できることは明らかです(間違いなく、より良い習慣かもしれません)。
これらの括弧を入れないのは間違いでしたか、これは私が報告すべきコンパイラの問題ですか?
NB:英語は私の主要言語ではありません。
[GithubのTSチームに]問題を追加できると思います(https://github.com/Microsoft/TypeScript/issues)。 :) – Paleo