ts-standard icon indicating copy to clipboard operation
ts-standard copied to clipboard

--fix for "An explicit null check is required" breaks code

Open verhovsky opened this issue 2 years ago • 1 comments

What version of this package are you using?

What operating system, Node.js, and npm version? macos 12.3 Node: v16.14.2 npm: 8.5.3

What happened?

write this code:

function stuff (arg: string, optionalArg?: string[]) {
  optionalArg = optionalArg || ['some', 'default', 'value']
}

run ts-standard --fix, it turns into

function stuff(arg: string, optionalArg?: string[]) {
  optionalArg = (optionalArg != null) || ['some', 'default', 'value']
}

which is broken because optionalArg = (optionalArg != null) sets optionalArg to true instead of keeping it as-is when it has a truthy value. Also, typescript doesn't even compile the new code because the variable can now be a string[] or boolean.

What did you expect to happen?

Code doesn't get changed or code gets changed to use the ?? operator instead.

Are you willing to submit a pull request to fix this bug?

no

verhovsky avatar Mar 29 '22 11:03 verhovsky

I reported this bug to typescript-eslint, resolved in v6.4.0. Also request an update to eslint-config-standard-with-typescript which update only the devDep (not the peerDep) on v38.0.0.

@theoludwig @lindluni @LinusU Updating both the dependencies ensure that a code fix does not break app functionality.

fasenderos avatar Aug 23 '23 12:08 fasenderos