Today I learned how to add types for Astro.locals global variable.
If you're using Astro's middleware with TypeScript and mutating this object, you might end up having TS issues like:
Property 'X' does not exist on type 'Locals'.So here's what you should do in this case.
Inside the src folder, add a .env.d.ts file.
Then, you'll add the following code:
src/env.d.ts 
 declare namespace App {
  interface Locals {
   // add props here
  }
}
To have a consistent type inference and run time, ensure that your middleware matches exactly the type you expect.