在TypeScript中是否有HTMLElements的对象初始值设定项?

时间:2015-12-10 17:42:11

标签: html typescript object-initializers

而不是这段代码:

error: call of overloaded 'print(double)' is ambiguous 

我想做这样的事情:

let img = document.createElement("img");
img.src = "foo.png";
img.className = "bar";
img.id = "abc123";

我知道我可以编写一个函数或构造函数来执行此操作,但只是想知道在TypeScript中是否存在某种本机支持?

2 个答案:

答案 0 :(得分:1)

是的,从某种意义上来说......

export class newImgModel{
   src: string = "foo.png";
   className:string = "bar";
   id: string = "abc123";
}

所以你可以像这样创建一个元素:

创建一个类来处理它:

class Dynamically_create_element
{
    thingToAdd:newImgModel;
    Create_Element(thingToAdd)
    {
    var element = document.createElement("img");
    //Assign different attributes to the element.
    element.setAttribute("src", thingToAdd.src);
    element.setAttribute("class",thingToAdd.className);
    element.setAttribute("id", thingToAdd.id);
    document.body.appendChild(element);
    }

}

然后你可以这样使用:

var objToAdd = new newImgModel();
var create = new Dynamically_create_element();
create.Create_Element(objToAdd );

应该做的伎俩..但我没有测试过!

参考:CS-Corner

答案 1 :(得分:1)

TypeScript中没有本机支持。内置的HTMLImageElement接口不适合用作选项对象,因为它没有选项。 TypeScript中没有本机支持的原因是因为JavaScript中没有本机支持。在元素创建过程中,您无法传递选项对象。

尽管如此,自己写这篇文章很简单:

export interface CreateImgOptions {
    src: string;
    className?: string;
    id?: string;
}

export function createImg(options: CreateImgOptions): HTMLImageElement {
    let img = <HTMLImageElement> document.createElement("img")
    img.src = options.src;
    if (options.className) img.className = options.className;
    if (options.id) img.id = options.id;
    return img;
}

用法:

let img = createImg({
    src: "foo.png",
    className: "bar",
    id: "abc123"
});
let img2 = createImg({src: "foo2.png"});