为什么 dom 和 dom.iterable 是分开的?

Why is dom and dom.iterable seperate?

tsconfig.json 中,您可以定义额外的库,为您提供 HTML 或 DOM “库”的类型(?我不知道正确的术语)。

我不明白为什么 domdom.iterable 是分开的。它们是在不同的 ecma modules/versions 中定义的吗?我可以安全地使用它们吗?

我怀疑这是因为迭代(迭代器和迭代器)直到 ES2015 才添加到 JavaScript,比 TypeScript well-established 晚了很久。当 ES2015 发布时,许多浏览器中的 JavaScript 引擎还不支持迭代,¹当然,当时 Internet Explorer 仍然是……东西……永远不会变得新特征。所以一些项目必须针对没有迭代的环境,所以库是分开的。

即使到了 2022 年,IE 仍能在企业和政府安装中幸存下来(尽管谢天谢地,这 终于 发生了变化),有些人不得不将他们的应用程序和页面定位到这些环境,所以他们不想使用 dom.iterable.


¹ ES2015 是规范的最后一个版本,其中包含尚未在现场实现的重要功能。这些天,the process that TC39 follows generally doesn't land features in the spec until there are (ideally) a couple of implementations of the feature shipping in the field. Instead, the proposal stays at Stage 3 until that happens, before being moved to Stage 4 by consensus at a TC39 meeting, being added to the editor's draft,因此在接下来的 6 月出现在下一个快照规范中。