gpt4 book ai didi

javascript - Promise 返回 {} 而不是 ImageData (TypeScript)

转载 作者:行者123 更新时间:2023-11-30 14:07:59 29 4
gpt4 key购买 nike

尝试在 TypeScript 中使用此代码:

convertURIToImageData(URI) {
return new Promise((resolve, reject) => {
if (URI == null) { return reject(); }
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const image = new Image();
image.addEventListener('load', () => {
canvas.width = image.width;
canvas.height = image.height;
context.drawImage(image, 0, 0, canvas.width, canvas.height);
const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
resolve(imageData);
}, false);
image.src = URI;
});}

从 Promise 返回 ImageData 但我得到的只是{}

像这样使用它:

this.convertURIToImageData('url').then((img) => {
// do stuff with ImageData
})

获得:

 Argument of type '{}' is not assignable to parameter of type 'ImageData'. Type '{}' is missing the following properties from type 'ImageData': data, height, width

最佳答案

{}目前是 TypeScript 的后备类型。如果 TypeScript 无法推断出函数返回的类型,它将自动推断出 {}。 . TypeScript,无法推断 img 的类型在您使用它的上下文中,它会推断出 {}编译失败。

如果您将 TypeScript 集成到您的代码编辑器中,只需将鼠标悬停在该函数上,您就可以确认发生了这种情况,您将看到返回类型为 Promise<{}> .您可以通过注释函数返回类型轻松解决此问题:

convertURIToImageData(URI): Promise<ImageData> {

现在返回类型正确显示为 Promise<ImageData>并且您的代码应该可以编译。

关于javascript - Promise 返回 {} 而不是 ImageData (TypeScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55026701/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com