Flow HTMLElement.querySelector返回iframe

时间:2016-10-14 22:17:06

标签: javascript flowtype

Flow似乎无法识别querySelector可能会返回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属性吗?

1 个答案:

答案 0 :(得分:8)

Flow不知道如何解析选择器,它需要做什么来理解将返回什么类型的元素。但是,它能够理解getElementsByTagName更简单的API,getElementsByTagName('iframe')使HTMLCollection<HTMLIFrameElement>返回querySelector

使用var myIframe = ((document.querySelector('iframe'): any): HTMLIFrameElement);,您需要投射它。像这样:

do { url = find[o['random'].random(0, find.length)]; sliced4 = url.slice(url.length-4,url.length); sliced5 = url.slice(url.length-5,url.length); c++; console.log(c+' '+sliced4+'-'+sliced5); if (c > 5) { o['bot'].send('Похоже, таких изображений не существует.', o['body'], {}); return; } } while(sliced4 !== '.jpg' || sliced4 !== '.png' || sliced5 !== '.jpeg');