返回 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

https://flowtype.org/try

有什么方法可以让我输入 myIframe 来同时使用它的 HTMLElement 属性和 HTMLIFrameElement 属性,而不是输入 Object

Flow 不知道如何解析选择器,但它需要解析选择器才能了解返回的元素类型。它能够理解 getElementsByTagName 更简单的 API,所以 it knowsgetElementsByTagName('iframe') returns HTMLCollection<HTMLIFrameElement>.

使用querySelector,你需要投射它。像这样:

var myIframe = ((document.querySelector('iframe'): any): HTMLIFrameElement);