为什么document.body不是HTMLBodyElement?

时间:2016-02-09 16:28:02

标签: typescript strong-typing

Visual Studio,提示document.bodyHTMLElement,而不是HTMLBodyElement,为什么会这样? - 我没有运气寻找答案。

class Test {
    documentBody1: HTMLBodyElement;
    documentBody2: HTMLElement;

    constructor(){
        this.documentBody1 = document.body; //wrong
        this.documentBody2 = document.body; //right
    }
}

1 个答案:

答案 0 :(得分:3)

属性 document.body的类型为HTMLElement,但在大多数情况下,它指的是实际为HTMLBodyElement的对象。

那么为什么document.body没有输入HTMLBodyElement?因为在某些文档中,它可能引用HTMLFrameSetElementHTMLElementHTMLBodyElementHTMLFrameSetElement的常见超类型。

规范中的document.body更多信息。