返回 iframe 的流程 HTMLElement.querySelector
Flow HTMLElement.querySelector returning an iframe
Flow 似乎无法识别 querySelector
可能 return HTMLElement
的子类型:
var myIframe = document.querySelector('iframe');
function foo(iframe: HTMLIFrameElement): void {
// I want to do iframe stuff!
}
foo(myIframe);
生产
10: foo(myIframe);
^ HTMLElement. This type is incompatible with
6: function foo(iframe: HTMLIFrameElement): void {
^ HTMLIFrameElement
有什么方法可以让我输入 myIframe
来同时使用它的 HTMLElement
属性和 HTMLIFrameElement
属性,而不是输入 Object
?
Flow 不知道如何解析选择器,但它需要解析选择器才能了解返回的元素类型。它能够理解 getElementsByTagName
更简单的 API,所以 it knows 即 getElementsByTagName('iframe')
returns HTMLCollection<HTMLIFrameElement>
.
使用querySelector
,你需要投射它。像这样:
var myIframe = ((document.querySelector('iframe'): any): HTMLIFrameElement);
Flow 似乎无法识别 querySelector
可能 return HTMLElement
的子类型:
var myIframe = document.querySelector('iframe');
function foo(iframe: HTMLIFrameElement): void {
// I want to do iframe stuff!
}
foo(myIframe);
生产
10: foo(myIframe);
^ HTMLElement. This type is incompatible with
6: function foo(iframe: HTMLIFrameElement): void {
^ HTMLIFrameElement
有什么方法可以让我输入 myIframe
来同时使用它的 HTMLElement
属性和 HTMLIFrameElement
属性,而不是输入 Object
?
Flow 不知道如何解析选择器,但它需要解析选择器才能了解返回的元素类型。它能够理解 getElementsByTagName
更简单的 API,所以 it knows 即 getElementsByTagName('iframe')
returns HTMLCollection<HTMLIFrameElement>
.
使用querySelector
,你需要投射它。像这样:
var myIframe = ((document.querySelector('iframe'): any): HTMLIFrameElement);