首页 新闻 会员 周边 捐助

typescript 中如何用类的成员变量保存泛型类型的值

0
悬赏园豆:50 [已解决问题] 解决于 2022-03-15 10:17

问题场景是这样的,下面的 container 变量是一个方法中的局部变量

const container = appendElement(document.body, 'form', (form) => (form.id = 'captcha_form'));

现在想改用类的成员变量来保存,但 appendElement 的返回值类型是泛型

export function appendElement<K extends keyof HTMLElementTagNameMap>(
  parent: HTMLElement,
  tagName: K,
  builder?: (element: HTMLElementTagNameMap[K]) => void
): HTMLElementTagNameMap[K] {
  const element = document.createElement(tagName);
  if (builder) {
    builder(element);
  }
  parent.appendChild(element);
  return element;
}

请问如何定义 container 的类型?

private container?: HTMLElementTagNameMap[K];

上面的定义会报错:

Type 'K' cannot be used as an index type
问题补充:

不想给整个类加上泛型声明

dudu的主页 dudu | 高人七级 | 园豆:29817
提问于:2022-03-06 13:16
< >
分享
最佳答案
0

const container = appendElement(document.body, 'form', (form) => (form.id = 'captcha_form'));

这一行可以看出container可以定义为HTMLElement 或者HTMLFormElement

收获园豆:50
Laggage | 小虾三级 |园豆:878 | 2022-03-06 21:20

HTMLElement 可以

private container: HTMLElement = document.createElement("form");
dudu | 园豆:29817 (高人七级) | 2022-03-15 10:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册