Tipo de fluxo constantemente exigindo verificações nulas

Eu estou querendo saber como evitar essas inúmeras verificações nulas ou pelo menos entender qual é o objetivo, porque parece contraproducente.

Flowtype está me dando um erro para isso se eu omitir a verificação nula:

var myEl = new MyElement()
if (document.body != null) { // error on next line if omitted
    document.body.appendChild(myEl)
}

Eu tenho que fazer essa verificação nula para o corpo do documento em cada retorno de chamada também, porque quem sabe, talvez o corpo seja nulo aqui, certo ?! Eu acho que isso é um exagero total. Não apenas isso, mas qual é o objetivo de uma verificação nula tão simples? Ele ignorará silenciosamente uma parte vital do programa e exibirá um comportamento indefinido em outro lugar, tornando a depuração do aplicativo muito mais difícil. Eu realmente preferiria apenas ter uma exceção nula neste momento, se algum erro acontecer aqui, porque para ter certeza de que esse pequeno segmento de código de duas linhas que eu escreveria em javascript teria que ser assim no tipo de fluxo:

var myEl = new MyElement()
if (document.body != null) {
    document.body.appendChild(myEl)
} else {
    console.error("null error")
}

Então, quatro linhas de código adicionais e algumas aninhamento apenas para rastrear algo que eu receberia de graça se eu deixasse o aplicativo cometer um erro. E eu preciso dessas 4 linhas em cada querySelector. Em todos os documentos. Em cada getElementByTagName. Isso por si só provavelmente aumenta minha base de código inteira em 10%. Qual o sentido de impor isso tão estritamente?

Em outros idiomas, eu também seria capaz de tentar capturar esses pontos de acesso gradualmente, conforme necessário, o fluxo também não me permite fazer isso. Ele mostra erros se eu adiciono um try-catch ou não.

questionAnswers(1)

yourAnswerToTheQuestion