我试图这样做,但是这个元素无法分配给我,我不明白为什么
class Elem<T> {
public element : T;
constructor(typeElement:string){
this.element = document.createElement(typeElement);
}
}
正如您所见playground
答案 0 :(得分:1)
你的例子非常接近,唯一的问题是T应该表示它扩展了HTMLElement然后你必须在构造函数的一侧将HTMLElement转换为类型T(不确定原因)。
// cast T as type HTMLElement
class Elem<T extends HTMLElement> {
public element: T;
constructor(typeElement: string) {
// had to cast HTMLElement to type T....
// odd because T extends HTMLElement, but it works
this.element = <T>document.createElement(typeElement);
}
}
var e = new Elem('div');
e.element.innerHTML = 'generic class test';
document.body.appendChild(e.element);
您可以在playground
中看到它正常工作