【问题标题】:Possibly Undefined Array References in Typescript Strict ModeTypescript 严格模式下可能未定义的数组引用
【发布时间】:2019-06-29 18:19:37
【问题描述】:

在工作中,我们使用带有严格 null 检查帮助的 Typescript 来捕获由 null/未定义变量引起的异常。然而,我们最近遇到了一个 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]

【问题讨论】:

    标签: arrays typescript types undefined


    【解决方案1】:

    有什么方法可以让 Typescript 检测到可能未定义的引用,例如 myArr[0]?

    不,而且它不太可能在 TypeScript 中实现,请参阅this proposal 的讨论。另见theseissues

    【讨论】:

      【解决方案2】:

      您可以添加此选项

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

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

      【讨论】:

        猜你喜欢
        • 2019-03-07
        • 1970-01-01
        • 2019-07-08
        • 1970-01-01
        • 2016-04-11
        • 2018-08-17
        • 1970-01-01
        • 2019-09-28
        • 1970-01-01
        相关资源
        最近更新 更多