在工作中,我们使用Typescript和严格的null检查帮助来捕获由null / undefined变量引起的异常。但是,我们最近遇到了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]
之类的未定义引用?
答案 0 :(得分:1)
您可以添加此选项
"noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
进入 tsconfigfile.json 的 "compilerOptions"
对象以捕获依赖于未定义数组项的错误。
答案 1 :(得分:0)
有什么方法可以获取Typescript来检测可能未定义的引用,例如myArr [0]?
否,它不太可能在TypeScript中实现,请参见this proposal的讨论。另请参见these issues。