El tipo de flujo requiere constantemente verificaciones nulas

Me pregunto cómo evitar estos numerosos controles nulos o al menos comprender cuál es el punto porque parece contraproducente.

Flowtype me está dando un error para esto si omito la comprobación nula:

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

Tengo que hacer esa verificación nula para el cuerpo del documento en cada devolución de llamada también, porque quién sabe, ¿tal vez el cuerpo es nulo aquí? Creo que esto es una exageración total. No solo eso, sino ¿cuál es el punto de un nullcheck tan simple? Saltará en silencio una parte vital del programa y exhibirá un comportamiento indefinido en otro lugar y hará que la depuración de la aplicación sea mucho más difícil. Realmente preferiría tener una excepción nula en este punto si alguna vez ocurre un error aquí, porque para estar realmente seguro de que este pequeño segmento de código de 2 líneas que escribiría en JavaScript tendría que ser así en tipo de flujo:

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

Entonces, 4 líneas de código adicionales y algunos anidamientos solo para rastrear algo que obtendría gratis si solo dejo que la aplicación se encuentre con un error. Y necesito esas 4 líneas en cada querySelector. En cada documento individual. En cada getElementByTagName. Esto solo probablemente aumenta toda mi base de código en un 10%. ¿Cuál es el punto de hacer cumplir esto tan estrictamente?

En otros idiomas también podría intentar atrapar estos puntos de acceso gradualmente según sea necesario, el flujo tampoco me permite hacerlo. Muestra errores si agrego un try-catch o no.

Respuestas a la pregunta(1)

Su respuesta a la pregunta