流类型和DOM对象
Flow type and DOM objects
我正在尝试使用流类型来检查一些文件。
不幸的是,我无法让它与dom对象一起工作:
我有这个代码
this.canvasContext = this.canvas.getContext('2d');
返回此错误:
src/CanvasManager.js:43
43: this.canvasContext = this.canvas.getContext('2d');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call of method `getContext`. Function cannot be called on
43: this.canvasContext = this.canvas.getContext('2d');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HTMLCanvasElement
所以流基本上识别HTMLCanvasElement
,但似乎不知道它有getContext
方法。
我是不是错过了什么?如果没有,有什么方法可以扩展DOM定义吗?
创建我自己的HTMLCanvasElement
定义将导致名称不匹配:
src/PlayingField.js:23
23: constructor(gameController: GameController, canvas: HTMLCanvasElement) {
^^^^^^^^^^^^^^^^^ HTMLCanvasElement. This type is incompatible with
23: constructor(gameController: GameController, canvas: HTMLCanvasElement) {
^^^^^^^^^^^^^^^^^ HTMLCanvasElement
这似乎是一个自v0.18.1以来应该修复的错误。
这仍然是0.22.1中的一个问题。由于某些原因,Flow无法正确地看到document.createElement('canvas')
返回HTMLCanvasElement
的类型,即使它在所包含的DOM定义文件中被定义为交集类型。
要解决此问题,只需添加一个if语句来检查document.createElement
的返回值的类型。例如:
var canvas = document.createElement('canvas');
if (!(canvas instanceof HTMLCanvasElement)) {
throw new Error('Unable to construct HTMLCanvasElement.');
}
// Do canvas specific stuff here
相关文章:
- 将GET请求(HTML字符串)转换为完整的DOM对象
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- 正在寻找从JSON/对象构建DOM客户端的JS库
- React-从简单对象树创建dom
- minko从dom获取对象
- 不带dom对象的jquery ajaxComplete()
- 从 DOM 数组中删除 DOM 对象
- 将 JavaScript 对象添加到 DOM 中
- 关于在对象属性中保存 DOM 元素
- Raphael JS:如何从 Dom 对象(Element.node)获取 Raphael 元素
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 创建具有关联 dom 元素的 javascript 对象的首选方法是什么
- DOM 元素是否可以具有其值为任意对象(而不是字符串)的属性
- SVG DOM对象间距/重叠
- 窗口对象属性返回一个dom节点
- DOM对象而不是其他DOM对象
- 如何区分DOM对象和JavaScript对象
- 在提取dom对象后,无法将每个名为tab的元素推送到数组中
- JavaScript中面向对象DOM操作的混乱混乱
- 在加载对象DOM之前修改对象DOM