我有这个密码, 但是我在下面的代码中得到一个错误,带下划线的“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 ++; }
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知道在这个块中已经消除了所有可为空的场景。