Of course, I would still feel pretty nervous turning these on in a large multi-dev codebase unless some corresponding linter rules were also in place.
Except when you’re doing them by mistake, or because a dependency happened to be clever and you missed it.
See also: UB in every C and C++ code base.
Most of these are pretty hard to do by accident... I didn't even know about maybe a third of these things, and I've been writing JavaScript for 10 years
A significant exception to all of the generalizations I've been making is iterableIsArray:
> When using an iterable object (in array destructuring, for-of or spreads), assume that it is an array.
Violating this one is neither an anti-pattern nor hard to do by accident. It would mean a significant shift in practices for a project, and it would have to allow for some really exceptional optimizations if I were going to even consider enabling it