`as` lies. `satisfies` checks.
```ts
const palette = {
green: '#034c3c',
orange: '#ec4e20',
} as Record<string, string>;
// palette.green is now `string` — we lost the literal type.
const palette2 = {
green: '#034c3c',
orange: '#ec4e20',
} satisfies Record<string, string>;
// palette2.green is `'#034c3c'` — literal preserved AND shape verified.
```
Use `satisfies` when you want the literal types kept and the shape checked. Use `as` only when you genuinely know more than the compiler — and almost never on object literals.