为什么TypeScript中没有DOMRect类型?

duk*_*uke 4 typescript

我试图确定返回的对象的类型element.getBoundingClientRect(),MDN列为"DOMRect".

如果我将对象记录到控制台,它将列为DOMRect具有以下属性的属性:高度,宽度,顶部,底部,左侧,右侧,x和y.但是,DOMRect从我所看到的,TypeScript中不存在类型.

我在TypeScript中找到的最接近的类型是ClientRect,它基本相同,但缺少'x'和'y'属性.

我也找到了类型DOMRectInit,DOMRect没有顶部/底部/左/右.

当我意识到'x'和'y'几乎总是反映'左'和'顶'属性时,我遇到的问题促使这个问题得到了解决,但是这里发生了什么?为什么TypeScript与标准浏览器API不一致?

另外,假设'x'总是等于'左'而'y'总是等于'top'是否安全?

art*_*tem 7

TypeScript DOM 类型声明源自此 repo,它似乎基于 Microsoft Edge 浏览器中实现的某些版本的 DOM,并在构建过程中应用了一些更改。

换句话说,DOM 类型可能不符合最新标准和/或其他浏览器实现。一般来说,关于此过程存在未解决的问题,但如果缺少某些特定定义,您始终可以在 TypeScript 存储库中提交有关该问题的问题。

  • 啊,我总是忘记TypeScript是微软开发的。现在一切都有意义了,谢谢! (5认同)

duk*_*uke 6

在MDN文档中找到了第二个问题的答案:

[left]与x具有相同的值,如果width为负,则为x + width

[Top]与y具有相同的值,如果height为负,则为y + height

所以基本上,假设'x'与'left'相同安全的,除非'width'可以是负数.