TypeScript Config: noUnCheckedIndexAccess
noUnCheckedIndexAccess
adds undefined
to any un-declared fields in a type. This is useful if you have an index signature and want to check if a property exists before accessing it.
Take this example:
const myObject: Record<string, string[]> = {};
myObject["myKey"].push("myString");
This satisfies TypeScript because myKey
is typed as string
in the index signature of myObject
. What we do not know yet is if myObject["myKey"]
is defined for us to use.
With noUnCheckedIndexAccess
enabled, TypeScript will warn us that the object is possibly undefined
and that we should check it exists:
const myObject: Record<string, string[]> = {};
if (myObject["myKey"]) {
myObject["myKey"].push("myString");
}