繁体   English   中英

Typescript 严格模式下可能未定义的数组引用

[英]Possibly Undefined Array References in Typescript Strict Mode

在工作中,我们使用带有严格空值检查的 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]

有没有办法让 Typescript 检测可能未定义的引用,例如 myArr[0]?

不,而且它不太可能在 TypeScript 中实现,请参阅此提案的讨论。 另请参阅这些问题

您可以添加此选项

"noUncheckedIndexedAccess": true,  /* Include 'undefined' in index signature results */

进入tsconfigfile.json 的"compilerOptions"对象以捕获错误取决于未定义的数组项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM