私はこのコードを持っている:何らかの理由でTypeScriptの型ガードは、親スコープで異なって動作するのはなぜですか?
function isNumberArray(l: any[]): l is number[] {
let res = true;
for (let e of l) {
res = res && (typeof e === 'number');
}
return res;
}
let arr:(number|string)[] = [1, 2];
if (isNumberArray(arr)) {
let res1: number = arr[1]; //OK
let res2: number = [1].map(i => arr[i])[0]; // ERROR: Type 'string | number' is not assignable to type 'number'
}
を、変数ARRは、ifブロック内の2行の異なる種類があります。どうして?
面白いです!タイプガードがそのブロックの中のラムダに及ばないのだろうかと思う。 – Paarth