我有一个简单的问题,我是 TS 的新手。在任何地方都找不到任何明确的解释,这令人惊讶。
以这种方式告诉 TS 类型的主要区别是什么:
const ul = document.querySelector('#nav') as HTMLUListElement;
这样:
const ul: HTMLUListElement = document.querySelector('#nav');
似乎 TS 可以识别类型并在两种情况下都给我 IntelliSens。如果是这样,为什么我需要像其他开发人员建议的那样在此处使用类型转换?
提前致谢。
最佳答案
“querySelector 方法返回 Element |无效的。” https://stackoverflow.com/a/43035645/12239744
当使用“as”时,您会强制将右侧值赋给此转换。
但是“:HTMLUlistElement” 仅当这是 Element 类的继承类时才有效。可以看到htmlelement的结构https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement
queryselector 返回 Element,所以我们可以使用“:HTMLUListElement” 如果这返回任何或 AppleClass,则不能使用此方法。您应该使用“as”,但如果您不知道确切的返回类型是什么。 “作为”可能是危险的。您可以将 AppleClass 转换为 HtmlElement,但此对象可能没有必要的属性。
我认为“as”不适合你的情况,另一个更好。
编辑:https://www.typescripttutorial.net/typescript-tutorial/type-casting/ “:HTMLUListElement”的用法是向下转换。
关于typescript - 为什么我需要在 Typescript 中输入 cast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64999165/