TypeScript 中 cannot read property of undefined 错误
枚举错误 - 无法读取未定义属性的发生有两个主要原因:
-
使用在编译期间被删除的
const
枚举。 - 具有循环导入(在相同文件之间导入成员)。
要解决枚举错误 - “cannot read property of undefined”,请确保在声明枚举时删除 const
关键字并从代码库中删除任何循环导入。
export const enum Sizes {
Small = 'S',
Medium = 'M',
Large = 'L',
}
上面的示例声明了一个 const 枚举。
Const
枚举只能使用常量枚举表达式,并在编译期间被完全删除。
使用 const
枚举可能会非常混乱,而且通常不鼓励使用。
TypeScript 中的常规枚举是真实对象,存在于运行时。 但是,const enum 成员在使用站点内联并且在运行时不可用,这可能会导致错误。
另一个需要注意的常见问题是循环导入(在相同文件之间导入和导出成员)。
这是一个循环导入的例子。
import { EmailStatus } from './another-file';
// ✅ For String Enums
export enum Sizes {
Small = 'S',
Medium = 'M',
Large = 'L',
}
// 👇️ Use EmailStatus here
这是导入 Sizes
枚举的另一个文件。
another-file.ts
import { Sizes } from './index'; export enum EmailStatus { Read = 'READ', Unread = 'UNREAD', Draft = 'DRAFT', } // 👇️ Use Sizes here
我们在两个文件之间导入和导出成员,因此它们相互依赖。
这对 TypeScript 编译器来说非常混乱,应该避免。
相反,我们可以将枚举移动到单个文件,导出它们,然后在另一个文件中使用它们,而无需在两个文件之间进行循环导入。
import { EmailStatus, Sizes } from './another-file';
// 👇️ Use EmailStatus and Sizes here
这是另一个文件的内容。
another-file.ts
export enum EmailStatus { Read = 'READ', Unread = 'UNREAD', Draft = 'DRAFT', } export enum Sizes { Small = 'S', Medium = 'M', Large = 'L', }
现在我们在两个文件之间没有任何循环导入,并且 TypeScript 在运行我们的代码时不会混淆。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。