尝试在 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/