Casting is as bad as using "any". You can make the compiler think anything you throw at it as that type and you can get bitten at runtime.
e.g.
‘foo as unknown as Dog’
// No error here
type Animal = 'dog' | 'cat';
const notAnimal = 'couch' as Animal;
// No error here either
type Food = { isSpicy: boolean };
const empty = {} as Food;
https://www.typescriptlang.org/play/index.html#code/C4TwDgpg...