首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向使用Svelte和TypeScript的HTMLElements添加类型

向使用Svelte和TypeScript的HTMLElements添加类型
EN

Stack Overflow用户
提问于 2021-06-15 16:20:03
回答 3查看 139关注 0票数 0

我正在使用Svelte和typescript,我想将类型定义添加到我引用的html元素中。

例如,我有这样的代码:

代码语言:javascript
复制
<script>
let closeButtonEl;
let prevFocused;

[...]
prevFocused = document.activeElement;
[...]
</script>
[...]
<button bind:this={closeButtonEl}>Click me</button>

也就是说,我有一个closeButtonEl,我确定它是一个按钮,还有一个prevFocused,它是一个带有focus()方法的HTMLElement。

我应该对每种类型使用什么类型?这种事情在哪里有记录呢?

EN

回答 3

Stack Overflow用户

发布于 2021-06-15 19:24:56

您可以在以下位置使用其中一个接口键入元素:https://developer.mozilla.org/en-US/docs/Web/API#interfaces

票数 1
EN

Stack Overflow用户

发布于 2021-06-16 22:48:44

正如斯蒂芬提到的,你可以在https://developer.mozilla.org/en-US/docs/Web/API#interfaces上找到web界面的列表。实际的类型信息来自generated from the webidl files produced by Microsoft Edgelib.dom.d.ts

对于各种元素类型,您需要查看以"HTML“开头的界面。在这个特定的例子中,您关心的是HTMLElementHTMLButtonElement

票数 1
EN

Stack Overflow用户

发布于 2021-06-17 01:45:39

只是为了完整的回答

正如斯科特和斯蒂芬之前所说的那样,这些元素的类型可以在https://developer.mozilla.org/en-US/docs/Web/API#interfaces上找到

对于这个特殊的案例,我找到了这两个解决方案:

代码语言:javascript
复制
  let closeButtonEl: HTMLButtonElement;
  let prevFocusedEl: Element & { focus?: () => void };

焦点是Element类型,在本例中,我还定义了它有一个document.activeElement方法。

另一种解决方案是将document.activeElement转换为HTMLElement ()方法附带的焦点,如下所示:

代码语言:javascript
复制
  let closeButtonEl: HTMLButtonElement;
  let prevFocusedEl: HTMLElement;

  $: if (isOpen) {
    prevFocusedEl = <HTMLElement> document.activeElement;
    closeButtonEl && closeButtonEl.focus();
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67982584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档