Seguridad ante nulos
Con strictNullChecks apagado, los valores pueden ser null o undefined sin que nadie te avise. Con la opción encendida —y strict la enciende— hay que comprobar antes de usar:
function doSomething(x: string | null) {
if (x === null) {
// no hacer nada
} else {
console.log("Hello, " + x.toUpperCase());
}
}
Esta es la comprobación que evita la mayoría de los errores de undefined is not a function en producción.
El operador !
El postfijo ! es una aserción de no nulo: le dice al compilador que ahí no hay null ni undefined.
function liveDangerously(x?: number | null) {
console.log(x!.toFixed());
}
La documentación advierte: esto no cambia el comportamiento en tiempo de ejecución, así que solo se usa cuando sabés con certeza que el valor no puede ser nulo. Si te equivocas, el error explota igual.
Aserciones de tipo
const myCanvas = document.getElementById("main_canvas") as HTMLCanvasElement;
Una aserción tampoco comprueba nada al ejecutar. La forma con ángulos, <HTMLCanvasElement>expr, no se permite en archivos .tsx. Para tipos incompatibles hace falta una doble aserción, expr as any as T, que es exactamente la señal de que estás forzando algo.
any
any desactiva la verificación entera. Es útil como escape puntual, no como forma de trabajar.