Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript-Name";“图像”;找不到_Typescript - Fatal编程技术网

TypeScript-Name";“图像”;找不到

TypeScript-Name";“图像”;找不到,typescript,Typescript,我试图创建一个图像加载类,但在数组定义中,它抛出一个错误,称未找到名称“image”,尽管在代码后面创建了一个图像对象 class ImageLoader { static toLoadCount:number = 0; private static images = Array<Image>(); static onAllLoaded() {}; static onImageLoad() { --Images.toLoadCount; if(Images.t

我试图创建一个图像加载类,但在数组定义中,它抛出一个错误,称未找到
名称“image”
,尽管在代码后面创建了一个图像对象

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;
}
类图像加载器{
静态toLoadCount:number=0;
私有静态图像=数组();
静态onAlloaded(){};
静态onImageLoad(){
--Images.toLoadCount;
如果(Images.toLoadCount==0)
Images.onalloaded();
}
静态负载(路径:字符串){
++Images.toLoadCount;
设img=新图像();
img.src=“Images/”+路径;
img.onload=Images.onImageLoad;
Images.Images[path.substring(0,path.length-4)]=img;
返回img;
}
静态allImagesLoaded(){
返回(Images.toLoadCount==0);
}
[键:字符串]:任意;
}
新图像()的结果是
HTMLImageElement
,因此数组的正确键入是
images:Array
images:HTMLImageElement[]

class ImageLoader {
    static toLoadCount: number = 0;

    private static images: HTMLImageElement[] = [];

    static onAllLoaded() { };

    static onImageLoad() {
        --ImageLoader.toLoadCount;

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

    ...
}

不幸的是,我不能发表评论,因为我没有足够的代表,但我只想在Aleksey L的解决方案中添加一件事

通常,如果您使用VS代码、Webstorm或任何具有intellisense的编辑器,您可以将鼠标悬停在“新图像()”上,它会告诉您它的类型

所以在本例中,您应该知道img实际上是一个HTMLImageElement:

let img: HTMLImageElement = new Image();
然后您会立即意识到您的数组不正确,因为图像不是
类型image
,而是
HTMLImageElement
类型,您可以立即将数组调整为
HTMLImageElement[]

韩国, 格奥尔格


附言:如果你能给我投票,我会很高兴的。我讨厌写这么长的帖子,而不是简短的评论。

可能的重复不是重复。这是关于Typescript编译,而不是javascript浏览器加载Get-upvote,所以现在您可以评论我相信:)。也可以看到Yes的类型,我知道我可以在图像上徘徊,我脑海中仍然有C++,所以我认为图像是一种包装。谢谢你的澄清!