我似乎能够创建画布,但当我来获得上下文
const resizeImage = async (maxSize: number) => {
const image = originalImage;
const id = positionId;
const resizeCanvas = document.createElement('canvas');
resizeCanvas.width = maxSize;
resizeCanvas.height = maxSize;
const ctx: CanvasRenderingContext2D = resizeCanvas.getContext('2D');
// ^ Error
...
字符串
错误是
Type 'CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext | null' is not assignable to type 'CanvasRenderingContext2D'.
Type 'null' is not assignable to type 'CanvasRenderingContext2D'.ts(2322)
型
6条答案
按热度按时间wb1gzix01#
该错误意味着
resizeCanvas.getContext('2D')
可以返回null,但您将其分配给CanvasRenderingContext2D
类型的变量(即这不能为空)。因此,在赋值之前,您需要确保结果不为null。另外,我猜你想确保它的类型是CanvasRenderingContext2D
而不是ImageBitmapRenderingContext
等。您可以:字符串
j9per5c42#
只需像这样声明yout变量:第一个月
字符串
slhcrj9b3#
以下方法将起作用
字符串
h43kikqp4#
而不是声明属性并在之后赋值,只需将其设置为本地,然后导出它。当你声明outside时,你需要先将它无效,canvas不接受它。
所以改变这个:
字符串
对此:
型
它不会给予canvas为null的错误。希望能有所帮助。观察结果:这是针对Angular 应用程序运行的。
utugiqy65#
context是做什么的?
由
getContext
方法生成的上下文是一个对象,用于从一个 canvas 中 * 生成图像 *。上下文可以生成2d图像或3d图像或仅位图图像。这取决于传递给方法的设置。
字符串
参见HTMLCanvasElement:getContext()方法完整列表的参数。
null context是什么意思?
这意味着浏览器不支持该类型的渲染。
浏览器无法生成图像。
你能做些什么来处理它?
接受
Context
和null
型
当您为
null
生成映像检查并在出现以下情况时抛出错误型
为什么要抛出错误?
因为无论如何,当上下文是
null
* 时,您将遇到运行时错误 *,因为在ctx
中没有drawImage
,因为它是null
。所以,当浏览器不支持该功能时,你最好“自己提出错误”并“处理它”。
zz2j4svz6#
打印错误:
它是
getContext("2d")
而不是"2D"
,大小写很重要。当传入一个无效参数时,此方法将返回
null
。字符串