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++,所以我认为图像是一种包装。谢谢你的澄清!