[BLOCK QUOTE].
Honestly, this is getting ridiculous. It's clear that you don't know what the heck you're talking about.
In the brief example you can't call `meth()` because TypeScript correctly narrows it to `never`. This is due to the behaviour of assignments narrowing the type of variables. TypeScript sees that a `Foo[]` is assigned, but no `Foo`. So trying to narrow it to `Foo` using `'bar' in ff` results in `never`, because it can't be a `Foo`.
If you take this behaviour out of the equation (e.g. by returning the value from a function) you will get the issue mentioned:
[TRIPLE QUOTE].
[Playground link]([URL]