如何在TypeScript项目中使用offscreencavas
我想在typescript项目中使用OffscreenCanvas,但我不知道如何做到这一点。当我尝试时:如何在TypeScript项目中使用offscreencavas,typescript,canvas,Typescript,Canvas,我想在typescript项目中使用OffscreenCanvas,但我不知道如何做到这一点。当我尝试时: let offscreen = new OffscreenCanvas(256, 256); 我的ide说“在Creencanvas之外找不到名字” 有什么提示吗?所有变量都需要在Typescript中定义类型,这就是为什么它被称为Typescript。 当我们没有对象的类型定义时,我们可以自己定义类型,或者使用任何: let offscreen:any=新的OffscreenCanva
let offscreen = new OffscreenCanvas(256, 256);
我的ide说“在Creencanvas之外找不到名字”
有什么提示吗?所有变量都需要在Typescript中定义类型,这就是为什么它被称为Typescript。 当我们没有对象的类型定义时,我们可以自己定义类型,或者使用任何:
let offscreen:any=新的OffscreenCanvas(256,256)代码>
注意,在Typescript中不鼓励使用any,如果对每个变量都使用any,那么最好不要使用Typescript
请阅读此处的声明文件:
目前,您需要修改lib.dom.d.ts
或类似文件
在node\u modules/typescript/lib/lib.dom.d.ts
中,查找接口HTMLCanvasElement扩展HTMLElement
并追加行
接口HTMLCanvasElement扩展了HTMLElement{
// ...
transferControlToOffscreen():OffscreenCanvas;
}
屏幕外接口CanvasRenderingContext2D扩展CanvasState、CanvasTransform、CanvasCompositing、CanvasImageSmoothing、CanvasFillStrokeStyles、CanvasShadowStyles、CanvasFilters、CanvasRect、CanvasDrawPath、CanvasUserInterface、CanvasText、CanvasDrawImage、CanvasImageData、CanvasPathDrawingStyles、CanvasExtDrawingStyles{
只读画布:OffscreenCanvas;
}
声明变量OffscreenCanvasRenderingContext2D:{
原型:OffscreenCanvasRenderingContext2D;
新建():OffscreenCanvasRenderingContext2D;
}
接口offscreencavas扩展事件目标{
宽度:数字;
高度:数字;
getContext(contextId:“2d”,contextAttributes?:CanvasRenderingContext2DSettings):OffscreenCanvasRenderingContext2D | null;
}
将var offscreencavas声明为:{
原型:OffscreenCanvas;
新(宽度:编号,高度:编号):OffscreenCanvas;
}
最后,编辑lib.dom.d.ts
和lib.webworker.d.ts
中的Transferable
定义:
type Transferable=ArrayBuffer | MessagePort | ImageBitmap | offscreencavas;
在这一点上,您将已经完成了修改所有内容的功能
另请注意:offscreencavas
s'width
和height
成员是可修改的,并且在使用canvas.transferControlToOffscreen()时,如果更改,元素的宽度和高度将在下一帧上同步
请注意,这不适用于webgl上下文,因为它更深入一些。或者更确切地说,要复制的东西太多了,除非你正在尝试设置它,否则没有任何意义
这有点老套,但很管用。理想情况下,您可以返回并对typescript进行PR,但现在这已经足够了。您可以在项目中安装@types/offscreencanvas
纱线
纱线添加@type/offscreencanvas
npm
npm i@types/offscreencavas
现在好好享受吧
更多信息,请参见OffscreenCanvas当前缺少的代码。我使用firefox,该行在js文件中运行。我的意思是,我的typescript ide找不到OffscreenCanvas定义,也无法将ts文件编译为js。如果你按照建议这样做是因为你喜欢生活在边缘,请注意,如果你更新typescript.image,ofc将不得不再次这样做。当你根据VS代码提示进行更改时,这是多么烦人,后来您意识到您一直在修改VS代码的typescript定义文件,而不是您的项目用于构建的node_模块中的文件。必须直接在typescript库中编辑这些文件是非常糟糕的。我认为有一种方法可以在typescript获得支持之前进行暗示项目级别的绑定,但我还没有实现这一点。如果您需要更新以支持OffscreenCanvas,可以在typescript@next截至9天前。我建议更新到那个版本作为起点。这对我的情况没有帮助。“@tensorflow models/coco ssd:”~2.0.0“,“@tensorflow/tfjs:”~1.3.2“,“@tensorflow/tfjs core:”~1.3.2“,“@types/offscreencanvas:”^2019.6.0”