Saltar al contenido
webtype.orgwebtype.orgtsconfig

    ↑↓ mover · ⏎ abrir · esc cerrar

    tsconfig

    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": false
    export function len(s: string | null) {
      return s.length
    }

    Compila limpio

    Con ella encendida

    "strictNullChecks": true
    export 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