Bil*_*ill 1 canvas typescript reactjs
我似乎能够创建画布,但是当我获得上下文时
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
...
Run Code Online (Sandbox Code Playgroud)
错误是
Type 'CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext | null' is not assignable to type 'CanvasRenderingContext2D'.
Type 'null' is not assignable to type 'CanvasRenderingContext2D'.ts(2322)
Run Code Online (Sandbox Code Playgroud)
错误意味着resizeCanvas.getContext('2D')可以返回空值,但是您将它分配给一个类型的变量CanvasRenderingContext2D(即这不能为空值)。因此,您需要在分配之前确保结果不为空。另外我想你想确保它是类型CanvasRenderingContext2D而不是ImageBitmapRenderingContext等。你可以这样做:
const resizeImage = async (maxSize: number) => {
const image = originalImage;
const id = positionId;
const resizeCanvas = document.createElement('canvas');
resizeCanvas.width = maxSize;
resizeCanvas.height = maxSize;
const res = resizeCanvas.getContext('2D');
if (!res || !(res instanceof CanvasRenderingContext2D)) {
throw new Error('Failed to get 2D context');
}
const ctx: CanvasRenderingContext2D = res;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1970 次 |
| 最近记录: |