TypeScript

TypeScript Mutations

StatementBlock

Before

if (x) { y(); }

After

if (x) {}

Condition

Before

if (x) { y(); }

After

if (true) { y(); }
if (false) { y(); }

BinaryOp - Add

Before

const x = 1 + 2

After

const x = 1 - 2
const x = 1 * 2

BinaryOp - And

Before

const x = a && b

After

const x = a || b

BinaryOp - BitAnd

Before

const x = 1 & 2

After

const x = 1 | 2
const x = 1 ^ 2

BinaryOp - BitOr

Before

const x = 1 | 2

After

const x = 1 & 2
const x = 1 ^ 2

BinaryOp - BitXor

Before

const x = 1 ^ 2

After

const x = 1 & 2
const x = 1 | 2

BinaryOp - Div

Before

const x = 1 / 2

After

const x = 1 * 2
const x = 1 - 2

BinaryOp - Eq

Before

const x = a == b

After

const x = a != b

BinaryOp - Gt

Before

const x = a > b

After

const x = a <= b
const x = a >= b

BinaryOp - Gte

Before

const x = a >= b

After

const x = a < b
const x = a > b

BinaryOp - Lt

Before

const x = a < b

After

const x = a >= b
const x = a <= b

BinaryOp - Lte

Before

const x = a <= b

After

const x = a > b
const x = a < b

BinaryOp - Mul

Before

const x = 1 * 2

After

const x = 1 / 2
const x = 1 + 2

BinaryOp - Or

Before

const x = a || b

After

const x = a && b

BinaryOp - Rem

Before

const x = 1 % 2

After

const x = 1 * 2
const x = 1 / 2

BinaryOp - Shl

Before

const x = 1 << 2

After

const x = 1 >> 2

BinaryOp - Shr

Before

const x = 1 >> 2

After

const x = 1 << 2

BinaryOp - StrictEq

Before

const x = a === b

After

const x = a !== b

BinaryOp - Ne

Before

const x = a != b

After

const x = a == b

BinaryOp - StrictNe

Before

const x = a !== b

After

const x = a === b

BinaryOp - Sub

Before

const x = 1 - 2

After

const x = 1 + 2
const x = 1 / 2

Assign - AddAssign

Before

x += 1

After

x -= 1
x = 1

Assign - AndAssign

Before

x &&= 1

After

x ||= 1
x = 1

Assign - BitAndAssign

Before

x &= 1

After

x |= 1
x = 1

Assign - BitOrAssign

Before

x |= 1

After

x &= 1
x = 1

Assign - BitXorAssign

Before

x ^= 1

After

x &= 1
x = 1

Assign - DivAssign

Before

x /= 1

After

x *= 1
x = 1

Assign - MulAssign

Before

x *= 1

After

x /= 1
x = 1

Assign - NormalAssign

Before

x = 1

After

x += 1
x -= 1

Assign - OrAssign

Before

x ||= 1

After

x &&= 1
x = 1

Assign - RemAssign

Before

x %= 1

After

x *= 1
x = 1

Assign - ShlAssign

Before

x <<= 1

After

x >>= 1
x = 1

Assign - ShrAssign

Before

x >>= 1

After

x <<= 1
x = 1

Assign - SubAssign

Before

x -= 1

After

x += 1
x = 1

ArrayDecl - Inline

Before

[1,2,3]

After

[]

ArrayDecl - Instance

Before

new Array(1, 2, 3)

After

new Array()

Literal - BoolTrue

Before

true

After

false

Literal - BoolFalse

Before

false

After

true

Literal - String

Before

'foo'

After

""

Literal - EmptyString

Before

''

After

"bough"

Literal - Number

Before

123

After

0
1
-1
Infinity
-Infinity
NaN

DictDecl

Before

const x = {foo: 1, bar: null}

After

const x = {}

OptionalChain - Literal

Before

const x = y?.z

After

const x = y.z

OptionalChain - Indexed

Before

const x = y?.['z']

After

const x = y['z']

OptionalChain - FnCall

Before

const x = y?.()

After

const x = y()

SwitchCase

Before

switch (x) {
  case 1:
    foo();
    break;

  case 2: {
    bar();
    break;
  }

  default: {
    baz();
    break;
  }
}

After

switch (x) {
  

  case 2: {
    bar();
    break;
  }

  default: {
    baz();
    break;
  }
}
switch (x) {
  case 1:
    foo();
    break;

  

  default: {
    baz();
    break;
  }
}
switch (x) {
  case 1:
    foo();
    break;

  case 2: {
    bar();
    break;
  }

  
}