首页 > 解决方案 > “?”有什么用?在变量后使用时在打字稿中

问题描述

什么是 ”?” 在“instances?.map”在这里做。我认为它在执行 map 之前检查实例是否为非空。如果是这个错误的原因可能是什么? 在此处输入图像描述

标签: typescript

解决方案


你的理解 .?是正确的。

(使用像x.y您所说.的“链接运算符”这样的代码。

随着x?.y您调用?.“可选链接运算符”,这意味着如果x无效,它将保释并且不运行地图 fn)

该错误与可选链接无关。如果你使用正常的链接,你会得到同样的错误。该错误可能instances实际上不是数组,因此缺少该map功能。

instances可能是某种“类似数组的对象”。

(就像一个 Promises 列表。或者一个 NodeList。例如:document.querySelectorAll("a")返回一个 NodeList ......有点像一个数组,但不完全是,它缺少一个 map 函数。所以如果你想映射,你需要先将它转换为一个数组.

示例:这会引发错误,因为返回对象缺少映射 fn:document.querySelectorAll("a").map(link => link.innerHTML)

这是有效的,因为返回对象有一个映射 fn: Array.from(document.querySelectorAll("a")).map(link => link.innerHTML)


推荐阅读