为什么TypeScript中没有DOMRect类型?

时间:2017-12-13 00:05:14

标签: typescript

我正在尝试确定element.getBoundingClientRect()返回的对象的类型,MDN lists as "DOMRect"

如果我将对象记录到控制台,它会被列为DOMRect,其属性包括:height,width,top,bottom,left,right,x和y。但是,根据我的看法,DOMRect在TypeScript中不存在。

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

我还找到了DOMRectInit类型,这是DOMRect,没有上/下/左/右。

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

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

2 个答案:

答案 0 :(得分:5)

我找到了第二个问题的答案in the MDN documentation

  

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

     

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

所以基本上, 可以安全地假设' x'与“左”相同除非'宽度'可能是消极的。

答案 1 :(得分:2)

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

换句话说,DOM类型可能不是最新的标准和/或其他浏览器实现。 There is open issue about this process in general,但如果缺少某些特定定义,您可以随时在TypeScript仓库中提出相关问题。