ん活字あなたは、このようなコードを使用する必要があるかどうか懸念削除(あなたはIEのようないくつかのブラウザはindexOf
をサポートしていない可能性があります知っているときは?)活字体のtranspilingとクロスブラウザにやさしいコードを作成
arrValues.indexOf('Sam') > -1
は活字体をいすべてのブラウザで動作することが保証された適切なJavaScriptコードが生成されます。 (TypeScriptの設定がES5に設定されていると仮定します)。
ん活字あなたは、このようなコードを使用する必要があるかどうか懸念削除(あなたはIEのようないくつかのブラウザはindexOf
をサポートしていない可能性があります知っているときは?)活字体のtranspilingとクロスブラウザにやさしいコードを作成
arrValues.indexOf('Sam') > -1
は活字体をいすべてのブラウザで動作することが保証された適切なJavaScriptコードが生成されます。 (TypeScriptの設定がES5に設定されていると仮定します)。
TypeScriptはいくつかの下位レベルのコンパイルを実行しますが、indexOf
はその1つではありません。 ECMAScript 5をターゲットにしている場合は、specificationにあるので、indexOf
が含まれていますが、ECMAScript 3をターゲットに設定していても修正されません。
下位レベルのコンパイルは、標準のバージョン間で行われるため、ブラウザの互換性が損なわれません。
下位レベルのコンパイルの2つの例を以下に示します。いずれの場合も、出力はtarget: "ES5"
フラグを使用してターゲティングしているバージョンによって異なります。
TypeScript。ブロックスコープの変数を使用できるようにします。
const x = 'loaded';
{
const x = 'new value';
}
// loaded
console.log(x);
JavaScript。名前の衝突を防ぐために、内部変数x
の名前がx_1
に変更されました。
var x = 'loaded';
{
var x_1 = 'new value';
}
// loaded
console.log(x);
活字体。 for-of
ループを使用できるようにします。
const x = "loaded";
for (const char of x) {
console.log(char);
}
JavaScript。ループははるかに優雅であるが、中程度に互換性のあるforループに変換される。
var x = "loaded";
for (var _i = 0, x_1 = x; _i < x_1.length; _i++) {
var char = x_1[_i];
console.log(char);
}
Typescriptコンパイラはブラウザ固有のコードを作成しませんが、それはまだ開発者の責任です。 – Ananda