ts-standard
ts-standard copied to clipboard
--fix for "An explicit null check is required" breaks code
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
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.