strictNullChecks
null deja de estar en todos los tipos
Sin ella, `null` y `undefined` son miembros de todos los tipos, así que `string` significa en silencio «string, o nada en absoluto».
- Desde
- TypeScript 2.0
- strict
- En strict
- En tu tsconfig
"strictNullChecks": true
El mismo fragmento las dos veces. Solo cambió la opción.
Con ella apagada
"strictNullChecks": falseexport function len(s: string | null) { return s.length }
Compila limpio
Con ella encendida
"strictNullChecks": trueexport function len(s: string | null) { return s.length }
Emite TS18047
Por qué al compilador le importa
Es la mayor diferencia semántica entre dos configuraciones de TypeScript, y la razón de que un tipo copiado de un proyecto signifique otra cosa en otro. Con la bandera apagada el compilador no tiene forma de expresar «seguro que está», así que toda anotación es media promesa. Encendida, la ausencia pasa a ser algo que se escribe, y cada punto donde el código viejo mentía al respecto se convierte en un error: por eso activarla tarde se mide en semanas y no en una tarde.
Conclusión
Una anotación sin esta bandera es una sugerencia. Con ella, es una afirmación.
Adónde ir después
22 opciones

