代码之家  ›  专栏  ›  技术社区  ›  Ryan Thomas

Typescript接口索引签名

  •  3
  • Ryan Thomas  · 技术社区  · 2 周前

    我有以下界面:

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

    然而,我收到一个错误,我的密钥可能未定义。我该如何解释?

    接口ClassSchedule{
    [key:string]:字符串;
    }
    
    1 回复  |  直到 2 周前
        1
  •  1
  •   Joe Clay    2 周前

    听起来你有 --noUncheckedIndexedAccess compiler option 启用。

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

    • 禁用该编译器选项(尽管这会使您失去一点类型安全性)。
    • 在尝试访问该密钥之前,请检查该密钥是否存在(例如,通过将访问包装在 if 陈述
    • 添加 ! 在按键之后(例如。 foo.bar! 或`foo[“bar”]!)断言该值将始终为非null。