gpt4 book ai didi

typescript - 为什么 document.body 不是 HTMLBodyElement?

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:00 26 4
gpt4 key购买 nike

Visual Studio,提示 document.body 是一个 HTMLElement,而不是 HTMLBodyElement,这是为什么呢? - 我没有找到答案。

class Test {
documentBody1: HTMLBodyElement;
documentBody2: HTMLElement;

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

最佳答案

property document.body 的类型是 HTMLElement,但在大多数情况下它指的是一个对象,它实际上是一个 HTMLBodyElement.

那么为什么 document.body 不是类型 HTMLBodyElement 呢?因为在某些文件中,它可能指的是一个HTMLFrameSetElementHTMLElementHTMLBodyElementHTMLFrameSetElement 的公共(public)父类(super class)型。

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


在评论中,icl7126 asks一个好问题:

I'm wondering why is there no null? It will be null when document is not loaded yet...

我的猜测是实用主义。在 TypeScript 社区(以及项目本身)中有很多实用主义而不是理想主义。由于人们几乎从不body 出现之前运行与 DOM 交互的代码,而不是让每个人在使用 时添加一个几乎肯定是不必要的守卫或非空断言code>document.body,定义 TypeScript 类型的人使用 HTMLElement 而不是 HTMLElement |空。它并不完全正确,但它是正确和有用之间的平衡。

关于typescript - 为什么 document.body 不是 HTMLBodyElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com