Versions: SQ 8.3, scanner 4.3.0, TS plugin 2.1, JS plugin 6.2.1
Rule: typescript:S3402
This rule is supposed to prevent using the addition operator with a mix of numbers and strings. I have code like:
declare enum E { X, Y }
const a = 1 + E.X;
The rule is flagging the addition operator with “Operands of ‘+’ operation must either be both strings or both numbers”. I checked this:
function n(num: number) { }
function s(str: string) { }
n(E.X); // OK
s(E.X); // error, Argument of type 'E' is not assignable to parameter of type 'string'
so the compiler clearly knows that E.X is assignable to number
, but for some reason this rule does not. (I specified “ambient” and “computed” because that’s where I ran into this case; I haven’t tested it with any other enum types, which could also be a problem.)