2017-12-11 11 views
0

합니까 타이프 라이터이 같은 코드를 사용할지 여부를 우려 제거 (당신이 IE가 indexOf 지원되지 않을 수 있습니다와 같은 일부 브라우저를 알고 있습니까?)타이프 라이터의 transpiling 및 작성 크로스 브라우저 친화적 인 코드

arrValues.indexOf('Sam') > -1 

은 타이프 라이터를합니까 transpiling 프로세스가 모든 브라우저에서 실행되도록 보장 된 적절한 JavaScript 코드를 생성합니까? (TypeScript 구성이 ES5로 설정되었다고 가정).

+0

Typescript 컴파일러는 브라우저 특정 코드를 작성하지 않으며, 여전히 개발자의 책임입니다. – Ananda

답변

1

TypeScript는 여러 가지 하위 수준 컴파일을 수행하지만 indexOf은 그 중 하나가 아닙니다. ECMAScript 5를 타겟팅하는 경우 specification에 있었기 때문에 indexOf이 포함되지만 어쨌든 ECMAScript 3을 대상으로하더라도 수정되지 않습니다.

모든 경우에 다운 레벨 컴파일은 표준 버전간에 이루어 지므로 브라우저 호환성을 원활하게하지 못합니다.

하위 레벨 컴파일의 두 가지 예가 아래에 있습니다. 각각의 경우 출력은 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); 
}