el caso de B == 1 es muy distinto al switch. la coerción ocurre principalmente en los operadores; switch no es un operador. si aún no te funciona con el cambio en el case, entonces seguramente hay algún detalle que haz omitido o pasado por alto. si haces una simple prueba en la consola, veras que dependiendo del valor en switch/case, se interpreta uno u otro.
Código:
switch(1){ // luego cambialo a '1';
case 1: console.log('integer'); break;
case '1': console.log('string'); break;
default: console.log('unknown'); break;
}