Mac*_*cik 8 html javascript html5-canvas typescript
我对画布元素和方法有奇怪的情况captureStream。根据文档 HTMLCanvasElement 有一个方法captureStream。但是我的 Angular6 应用程序声称没有这样的方法。
所以这段代码不起作用:
let canvas: HTMLCanvasElement;
canvas = document.createElement('canvas');
let stream = canvas.captureStream(20);
Run Code Online (Sandbox Code Playgroud)
它在第三行失败。
此代码运行没有任何错误:
let canvas: any;
canvas = document.createElement('canvas');
let stream = canvas.captureStream(20);
Run Code Online (Sandbox Code Playgroud)
这怎么可能?我 100% 确定 HTMLCanvasElement 有这个方法并且 document.createElement('canvas') 返回 HTMLCanvasElement。
您可以在 TypeScript 中扩展现有接口并将您的 Element 转换为自定义接口。
例子:
interface CanvasElement extends HTMLCanvasElement {
captureStream(frameRate?: number): MediaStream;
}
const myCanvas = <CanvasElement> document.createElement('canvas');
const myStream = myCanvas.captureStream();
Run Code Online (Sandbox Code Playgroud)
在整个项目中可用,无需创建新界面:
declare global {
interface HTMLCanvasElement {
captureStream(frameRate?: number): MediaStream;
}
}
Run Code Online (Sandbox Code Playgroud)