TypeScript - 名称"图像"未找到

时间:2018-05-16 02:50:37

标签: typescript

我试图创建一个图片加载类,但是在数组定义中,尽管在代码中稍后创建了一个图像对象,但它会抛出错误name "Image" not found

class ImageLoader {
static toLoadCount:number = 0;

private static images = Array<Image>();

static onAllLoaded() {};

static onImageLoad() {
    --Images.toLoadCount;

    if(Images.toLoadCount == 0)
        Images.onAllLoaded();
}

static load(path: string) {
    ++Images.toLoadCount;
    let img = new Image();
    img.src = "Images/" + path;
    img.onload = Images.onImageLoad;
    Images.images[path.substring(0, path.length - 4)] = img;
    return img;
}

static allImagesLoaded() {
    return (Images.toLoadCount == 0);
}

[key: string]: any;
}

2 个答案:

答案 0 :(得分:4)

我很遗憾无法发表评论,因为我没有足够的代表,但我只是想为Aleksey L's解决方案添加一件事。

通常,如果您使用的是VS-Code或Webstorm或任何具有智能感知的编辑器,您可以将鼠标悬停在“new Image()”上,它会告诉您它的类型。

所以在这种情况下你会知道img实际上是一个HTMLImageElement:

let img: HTMLImageElement = new Image();

然后您会立即发现您的数组不正确,因为图片不是type Image而是类型HTMLImageElement,您可以立即将数组调整为HTMLImageElement[]

KR, 乔治

P.S。:我很乐意,如果你赞成这个,我讨厌这么长的帖子,而不是简短的评论。

答案 1 :(得分:2)

new Image()的结果为HTMLImageElement,因此数组的正确输入为
images: Array<HTMLImageElement>images: HTMLImageElement[]

class ImageLoader {
    static toLoadCount: number = 0;

    private static images: HTMLImageElement[] = [];

    static onAllLoaded() { };

    static onImageLoad() {
        --ImageLoader.toLoadCount;

        if (ImageLoader.toLoadCount == 0)
            ImageLoader.onAllLoaded();
    }

    ...
}