我有以下接口:

interface ClassSchedule {
  [key: string]: string;
}

但是,我收到一个错误,我的密钥可能是未定义的.我该怎么解释?

interface ClassSchedule {
  [key: string]: string;
}

推荐答案

听起来你已经启用了--noUncheckedIndexedAccess compiler option.

您可以通过以下方式避免此错误:

  • 禁用该编译器选项(尽管这会损失一些类型安全性).
  • 在try 访问它之前判断它是否存在(例如,通过将访问封装在if语句中).
  • 在键后添加一个!(例如foo.bar!或`foo ["bar"]!)声明该值将始终为非空.

Typescript相关问答推荐

使用新控制流的FormArray内部的Angular FormGroup

动态判断TypScript对象是否具有不带自定义类型保护的键

异步动态生成Playwright测试,显示未找到测试

创建一个根据布尔参数返回类型的异步函数

如何在TypeScrip中使用嵌套对象中的类型映射?

如何提取密钥及其对应的属性类型,以供在新类型中使用?

如何重构长联合类型?

返回具有递归属性的泛型类型的泛型函数

了解类型规则中的关键字

在VSCode中显示eslint错误,但在终端中运行eslint命令时不显示?(Vite,React,TypeScript)

为什么TypeScrip不能解析对象析构中的赋值?

缩小对象具有某一类型的任意字段的范围

带投掷的收窄类型

是否将Angular *ngFor和*ngIf迁移到新的v17语法?

如何在Deno中获取Base64图像的宽/高?

为什么数字是`{[key:string]:UNKNOWN;}`的有效密钥?

有没有一种方法可以防止我的组件包在其中安装样式组件'; node 模块中的s目录

JSX.Element';不可分配给类型';ReactNode';React功能HOC

为什么过滤器不改变可能的类型?

如果父级被删除或删除,如何自动删除子级?