.d.ts
tsconst a = [false, 0] as [boolean, number]; let a0 = a[0]; // booleanと推論される let a2 = a[2]; // コンパイルエラー a.push(1); // エラーにならない a.push('2'); // 型が合わないのでエラーになる let a2 = a[2]; // 依然としてコンパイルエラー