2017-12-11 8 views
0

ん活字あなたは、このようなコードを使用する必要があるかどうか懸念削除(あなたはIEのようないくつかのブラウザはindexOfをサポートしていない可能性があります知っているときは?)活字体のtranspilingとクロスブラウザにやさしいコードを作成

arrValues.indexOf('Sam') > -1 

は活字体をいすべてのブラウザで動作することが保証された適切なJavaScriptコードが生成されます。 (TypeScriptの設定がES5に設定されていると仮定します)。

+0

Typescriptコンパイラはブラウザ固有のコードを作成しませんが、それはまだ開発者の責任です。 – Ananda

答えて

1

TypeScriptはいくつかの下位レベルのコンパイルを実行しますが、indexOfはその1つではありません。 ECMAScript 5をターゲットにしている場合は、specificationにあるので、indexOfが含まれていますが、ECMAScript 3をターゲットに設定していても修正されません。

下位レベルのコンパイルは、標準のバージョン間で行われるため、ブラウザの互換性が損なわれません。

下位レベルのコンパイルの2つの例を以下に示します。いずれの場合も、出力はtarget: "ES5"フラグを使用してターゲティングしているバージョンによって異なります。

let/const

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); 
}