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
除了输入myIframe
之外,我有什么办法可以输入HTMLElement
来让我同时使用HTMLIFrameElement
属性及其Object
属性吗?
答案 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');