The operator checks a value against a type without widening it, which is exactly what a configuration object needs and nothing else does as well.
const routes = {
home: { path: '/', auth: false },
admin: { path: '/admin', auth: true },
} satisfies Record<string, RouteConfig>
routes.admin.auth // true, the literal — not boolean
routes.home.path // '/', not string
routes.missing // error: property does not exist
// with `: Record<string, RouteConfig>` instead, all three
// of those are lost.
An annotation checks and widens; satisfies checks and keeps. A year of using it has produced one consistent lesson: it belongs on object literals that are also data, and it is not a general replacement for annotations on variables whose type is the point. Where it genuinely shines is a keyed map where the keys themselves need to stay literal.