代码之家  ›  专栏  ›  技术社区  ›  DDave

类型脚本:对象可能未定义,但我使用if-chained进行检查

  •  1
  • DDave  · 技术社区  · 7 年前

    我有这个密码, 但是我在下面的代码中得到一个错误,带下划线的“startups[i].logo”可能未定义,如果我使用if检查值,为什么会出现此错误?

      for (let i = 0; i < startups.length; i++) {
        let startup = startups[i];
        if (startups[i] && startups[i].logo && startups[i].logo.location) {
          aStartup.push({
            objectID: startups[i].id,
            logo: startups[i].logo.location,
          });
          batchCount ++;
        }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Karol Majewski    7 年前

    for (let i = 0; i < startups.length; i++) {
      const startup = startups[i];
      const logo = startup.logo;
    
      if (startup && logo && logo.location) {
        aStartup.push({
          objectID: startup.id,
          logo: logo.location
        });
    
        batchCount ++;
      }
    }
    

    这会有所不同,因为TypeScript知道在这个块中已经消除了所有可为空的场景。

    推荐文章