- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Flow 对我的应用进行类型检查。
我有一个 dom 节点,我必须使用 document.querySelector
手动拉取。在 Flow 看来,这会返回一个 HTMLElement
。它实际上返回了一个视频元素,我将其类型检查为 HTMLVideoElement
。
我正在尝试转换它,但它仍然出错。我做错了什么?
let videoElement: HTMLVideoElement;
videoElement = document.querySelector('video') // type is HTMLElement, errors out.
<video class="lol"></video>
我得到的错误是 This type is incompatible with
.
HTMLVideoElement
最佳答案
您的错误与它是视频这一事实无关。如果你看the type definition for querySelector('video')
, 这是
querySelector(selector: 'video'): HTMLVideoElement | null;
如果您仔细观察, 与您放置在变量上的类型不兼容。 querySelector
可以返回 null
而您忽略了这个事实。 Flow 在这里捕获潜在的错误并让您验证和处理错误案例,这是它的全部工作。
所以你有几个选择
用null
注解,并检查何时使用变量来处理它,例如
let videoElement: HTMLVideoElement | null = document.querySelector('video');
明确检查并抛出,以便流可以知道您希望它出错,例如
let result = document.querySelector('video');
if (!result) throw new Error("Video not found");
// Technically you don't need to reassign and you can reuse
// 'result' but I'm doing it for clarity.
let videoElement: HTMLVideoElement = result;
使用 any
let videoElement: HTMLVideoElement = (document.querySelector('video'): any);
明确告诉流忽略该行上的错误。在你的 .flowconfig
做
[options]
suppress_comment= \\(.\\|\n\\)*\\$FlowIgnore
然后在你的代码中做
let videoElement: HTMLVideoElement;
// $FlowIgnore
videoElement = document.querySelector('video');
关于javascript - 流: HTMLVideoElement and HTMLElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45065728/
这是我的 JavaScript 代码: // Convert Frame to Image Object.defineProperty(HTMLVideoElement.prototype, 'con
我正在使用 Flow 对我的应用进行类型检查。 我有一个 dom 节点,我必须使用 document.querySelector 手动拉取。在 Flow 看来,这会返回一个 HTMLElement。它
这个问题在这里已经有了答案: unresolved method captureStream on HTMLCanvasElement (3 个答案) 关闭去年。 我正在制作一个简单的项目,该项目在
在创建视频播放器时,我发现了这个问题: 主要事实是:(顺便说一下,我使用的是 OS X Sierra)只有在切换到其他桌面后,才会在 Chromium 浏览器中发生这种情况。在 Chrome、Oper
我在 node + nwjs 项目中使用 tensorflow.js,当我将视频元素作为输入到 tensowflow fromPixels 方法时,我在控制台中得到这个奇怪的错误作为输出: Uncau
我是一名优秀的程序员,十分优秀!