This made me curious, so I checked out the TSlint source code for this rule. It has a function called isFiltered
which seems to only check for ts.SyntaxKind.IfStatement
, not for ts.SyntaxKind.SwitchStatement
.
function isFiltered({statements}: ts.Block): boolean {
switch (statements.length) {
case 0: return true;
case 1: return statements[0].kind === ts.SyntaxKind.IfStatement;
default:
return statements[0].kind === ts.SyntaxKind.IfStatement && nodeIsContinue((statements[0] as ts.IfStatement).thenStatement);
}
}
So unless you want to convert your object to an array, you’ll need to use a fix from the link you provided. Either Object.keys
, or an if
statement:
for (const errorName in state.errors) {
if (state.errors.hasOwnProperty(errorName)) {
switch (errorName) {
The interesting thing is that you can have any kind of if
statement and the error will go away. There is no check to see if you are calling hasOwnProperty
.