我正在尝试确定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'是否安全?
答案 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仓库中提出相关问题。