Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在TypeScript项目中使用offscreencavas_Typescript_Canvas - Fatal编程技术网

如何在TypeScript项目中使用offscreencavas

如何在TypeScript项目中使用offscreencavas,typescript,canvas,Typescript,Canvas,我想在typescript项目中使用OffscreenCanvas,但我不知道如何做到这一点。当我尝试时: let offscreen = new OffscreenCanvas(256, 256); 我的ide说“在Creencanvas之外找不到名字” 有什么提示吗?所有变量都需要在Typescript中定义类型,这就是为什么它被称为Typescript。 当我们没有对象的类型定义时,我们可以自己定义类型,或者使用任何: let offscreen:any=新的OffscreenCanva

我想在typescript项目中使用OffscreenCanvas,但我不知道如何做到这一点。当我尝试时:

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”