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");
}