Typescript 将HTMLImageElement分配给TexImageSource

Typescript 将HTMLImageElement分配给TexImageSource,typescript,webgl,Typescript,Webgl,我有一个TexImageSource类型的变量,我正在尝试为它设置一个HTMLImageElement 据我所知,TexaImageSource是: type TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas 这是我的图像加载代码: return new Promise((resolve: Function, r

我有一个TexImageSource类型的变量,我正在尝试为它设置一个HTMLImageElement

据我所知,TexaImageSource是:

type TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas
这是我的图像加载代码:

return new Promise((resolve: Function, reject: Function) => {
    let image: HTMLImageElement = new Image();
    
    image.onload = () => { resolve(image); };
    image.onerror = error => { reject(error); };
    image.src = url;
});
我得到的错误是:

Type 'unknown' is not assignable to type 'TexImageSource'.
  Type '{}' is missing the following properties from type 'OffscreenCanvas': height, width, convertToBlob, getContext, and 4 more.

我真的不明白为什么会出现这个错误,有人能解释一下情况吗?

我不是打字脚本专家,但我认为您需要声明
承诺的类型


function loadImage(url: string): Promise<HTMLImageElement> {
    return new Promise((resolve: Function, reject: Function) => {
        let image: HTMLImageElement = new Image();
        
        image.onload = () => { resolve(image); };
        image.onerror = error => { reject(error); };
        image.src = url;
    });
}

async function main() {
    const loadedImage = await loadImage('someImage.png');
    const texture: TexImageSource = loadedImage;
}
然后我得到了你的问题显示的错误

你也可以这样做

function loadImage(url: string) {
    return new Promise<HTMLImageElement>((resolve: Function, reject: Function) => {
函数loadImage(url:string){
返回新承诺((解析:函数,拒绝:函数)=>{

我不是typescript专家,但我认为您需要声明
承诺的类型


function loadImage(url: string): Promise<HTMLImageElement> {
    return new Promise((resolve: Function, reject: Function) => {
        let image: HTMLImageElement = new Image();
        
        image.onload = () => { resolve(image); };
        image.onerror = error => { reject(error); };
        image.src = url;
    });
}

async function main() {
    const loadedImage = await loadImage('someImage.png');
    const texture: TexImageSource = loadedImage;
}
然后我得到了你的问题显示的错误

你也可以这样做

function loadImage(url: string) {
    return new Promise<HTMLImageElement>((resolve: Function, reject: Function) => {
函数loadImage(url:string){
返回新承诺((解析:函数,拒绝:函数)=>{
function loadImage(url: string) {
    return new Promise<HTMLImageElement>((resolve: Function, reject: Function) => {