Saltar al contenido
webtype.orgwebtype.orgtsconfig

    ↑↓ mover · ⏎ abrir · esc cerrar

    tsconfig

    noPropertyAccessFromIndexSignature

    El acceso con punto significa declarado

    Reserva `obj.key` para las propiedades realmente declaradas y empuja todo lo que venga de una firma de índice a `obj["key"]`.

    Desde
    TypeScript 4.2
    strict
    Fuera de strict
    En tu tsconfig
    "noPropertyAccessFromIndexSignature": true

    El mismo fragmento las dos veces. Solo cambió la opción.

    Con ella apagada

    "noPropertyAccessFromIndexSignature": false
    const env: { [key: string]: string } = {}
    
    export const mode = env.NODE_ENV

    Compila limpio

    Con ella encendida

    "noPropertyAccessFromIndexSignature": true
    const env: { [key: string]: string } = {}
    
    export const mode = env.NODE_ENV

    Emite TS4111

    Por qué al compilador le importa

    Es una regla de notación más que de corrección, y se gana el sitio por lo que permite deducir al lector: con ella, un punto significa que alguien escribió esa propiedad, y un corchete que la clave es un dato. Sin ella, `env.NODE_ENV` y `config.timeout` parecen idénticos y solo uno se comprueba contra algo. Casa de forma natural con `noUncheckedIndexedAccess`, que aporta la otra mitad: que el valor podría no estar.

    Conclusión

    Punto para lo que declara el tipo, corchete para lo que resulte contener el dato.

    Adónde ir después

    22 opciones