1
나는 타이프이 쓰기, 그것은 생산타이프 라이터는 -> ES5 문제
> [...Array(10)].map((item) => 0);
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
일단 자바 스크립트 transpilied :
노드의 콘솔에서const mask = [...Array(10)].map((item) => 0);
가 10 제로의 배열을 생산
var mask = Array(10).slice().map(function (item) { return 0; });
그러나 이것은 같지 않습니다.
> Array(10).slice().map(function (item) { return 0; })
[ , , , , , , , , , ]
필자는 타이프 스크립트가 iso-functional 코드를 생성한다고 생각하고있었습니다. 내가 틀렸어? TS가 생산하는 모든 것에주의를 기울여야합니까?
I이 구성에 1.20150623.0 TSC 노드 V7을 사용하고 :
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"module": "commonjs",
"target": "ES5",
"outDir": ".tmp/js",
"rootDir": "js"
}
}
내가 ** **이, 재현 할 수 있지만 : 당신의 TS는, 복사 및 붙여 넣기, 잘 작동합니다. JS 양식의'map'은 실패했지만, 그렇게해서는 안됩니다. 우스운 일이 벌어지고 있습니다. – ssube
@ssube : JS가 예상대로 작동하고 있습니다. '.slice()'메서드는 Array의 구멍을 무시하므로 원본을 정확하게 표현합니다. [22.1.3.22 Array.prototype.slice (시작, 끝)] (http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.slice), 특히 점 15 (d), 여기서 * kPresent *는 현재 색인의 * HasProperty * 결과입니다. –
@squint 정확히는'slice' _does_은 빈 배열 10 개가있는 동일한 배열을 제공합니다. 그러나,'.map'은 그것들을 함수의 "기능적"패밀리로 무시합니다. - forEach','map','reduce','some' 등은 존재하는 배열의 값을 넘기 만합니다. – vlaz