JetBrains IDE上的Java语言:类型提示自定义自定义元素实例

问题描述 投票:3回答:1

请考虑以下内容:

class MyCustomElement extends HTMLElement {}
customElements.define('my-custom-element', MyCustomElement);
/** @type {MyCustomElement} */
const myCustomElement = document.createElement('my-custom-element');
//                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

myCustomElement将是运行时MyCustomElement的实例(HTMLElement的派生);但是,HTMLElement type-hinting使PhpStorm的JetBrains IDE抱怨:

初始化器类型myCustomElement无法分配给变量类型HTMLElement

令人惊讶的是,IDE对内置类型完全没问题:

MyCustomElement

因此,要解决警告,我应该怎么做非常合适的“键入提示”到IDE(不使用/** @type {HTMLDivElement} */ const myDiv = document.createElement('div');


我可以使用*运算符实例化myCustomElement;似乎可行,但是没有提及这两种方法之间的区别(使用new还是使用new,以及为什么或为什么不选择一个而不选择另一个?!]
javascript ide phpstorm jsdoc type-hinting
1个回答
0
投票

[Closure无法理解您是从new实例化MyCustomElement的实例,因为它不了解document.createElement()对它的内部类型系统的影响*,因此您正在创建一个标记名称为“我的自定义元素”。

您可能想要做的是将document.createElement()转换为document.createElement函数:

customElements.define

*:AFAIKT没有证据表明他们打算这样做。

© www.soinside.com 2019 - 2024. All rights reserved.