На работе мы используем Typescript со строгой проверкой нуля, чтобы ловить исключения, вызванные нулевыми / неопределенными переменными.Однако недавно мы столкнулись с ошибкой, которую Typescript, похоже, упускает.Код ниже демонстрирует это:
interface IMyObj {
foo: string;
}
const myArr: IMyObj[] = [];
const myObjProp = myArr[0].foo;
console.log(myObjProp);
Typescript скомпилирует это без жалоб, но при запуске он, очевидно, выдаст ошибку типа:
Uncaught TypeError: Cannot read property 'foo' of undefined
Конечно, мы можем определить все типы массивовв кодовой базе как (IMyObj | undefined)[]
вместо IMyObj[]
, но это также подвержено ошибкам, поскольку было бы легко пропустить его.
Есть ли способ заставить Typescript обнаружить потенциально неопределенную ссылку, такую какmyArr[0]