Фон
Я реализую Flow для проверки типов моих свойств в javascript. Это ретро-подгонка, поэтому я начинаю с маленького класса.
Я использую определения свойств этапа 2 es2017, см. здесь
Большинство свойств моего класса — это элементы dom, полученные с помощью querySelector.
Проблема
У меня возникают проблемы с получением правильного типа для этих элементов. Например
export default class myClass {
myElement: HTMLElement = document.querySelector('.myElement');
constructor () {
if (this.myElement !== null) {
this.myFunc(this.myElement);
}
}
myFunc (element: HTMLElement) {
...
}
}
Это терпит неудачу, говоря, что this.myElement
if равно null и несовместимо с myFunc (element: HTMLElement)
Уже пробовал
Я видел еще один вопрос о чем-то подобном с iFrame. Но решение очень мутное. Это включает в себя приведение к любому, а затем к вашему правильному элементу. как
var myIframe = ((document.querySelector('iframe'): any): HTMLIFrameElement);
Я не хочу каждый раз отбрасывать такие элементы.
Вопрос
Есть ли чистое решение для объявления элементов как типов в Flow?
myElements: ?Node
? - person Felix Kling   schedule 17.05.2017: Node
без?
, вам нужно доказать средству проверки типов, что он гарантированно существует, поскольку Flow не может узнать, будет ли запрос выполнен успешно. - person loganfsmyth   schedule 17.05.2017