'typeof x' type guard can be unsound in one of the following two cases:
  1. typeof x never corresponds to the specified value (e.g., typeof x === 'number' when 'x' is 'string | boolean')
  2. typeof x always corresponds to the specified value (e.g., typeof x === 'string' when 'x' is 'string')

'x instanceof A' type guard can be unsound in one of the following two cases:
  1. Type of x is not related to 'A'
  2. Type of x is 'A' or a subtype of 'A'