私はES6とTypeScriptの両方がブロックレベルスコープをサポートしていることを理解していますが、ES3とES5をターゲットにするときは、出力は機能レベルのスコープにする必要があります。私は、なぜTypeScriptが変数を吊り上げていないのかという背後にある論理がなければならないと思います。問題にぶつかってはいません。なぜ、変数を持たないのか不思議です。なぜ型コピートランスは変数を持ち上げないのですか?
function seed(length: number, multiplier: number): number[] {
let result: number[] = [];
for(let i: number = 0; i < length; i++) {
let n: number = i * multiplier;
result.push(n);
}
return result;
}
transpiler出力:
function seed(length, multiplier) {
var result = [];
for (var i = 0; i < length; i++) {
var n = i * multiplier;
result.push(n);
}
return result;
}
Iは、関数の先頭に掲げ変数宣言を有するものであろうと予想しているであろう結果、次の活字体所与例えば
、 。このようなもの:
function seed(length, multiplier) {
var
i, n,
result = [];
for (i = 0; i < length; i++) {
n = i * multiplier;
result.push(n);
}
return result;
}
洞察力は大変ありがとうございます。ありがとう!
しかし、出力を支援、varではなくそれで、宣言を上に移動することができます。しかし、すでに正確性をチェックされている自動生成されたコードでこれを行うことはあまり意味がありません。 –
Durrr、それはvarを使用することを意味します。 –