typescript泛型类型htmlelement包装

时间:2015-09-03 10:10:36

标签: generics typescript

我试图这样做,但是这个元素无法分配给我,我不明白为什么

class Elem<T> {
    public element : T;
    constructor(typeElement:string){
        this.element = document.createElement(typeElement);
    }
}

正如您所见playground

1 个答案:

答案 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

中看到它正常工作