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": falseconst env: { [key: string]: string } = {} export const mode = env.NODE_ENV
Compila limpio
Con ella encendida
"noPropertyAccessFromIndexSignature": trueconst 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

