instanceof String não se comporta como esperado no Script do Google Apps
Eu queria verificar se uma variável em um Script do Google Apps era uma String, mas descobri que a instância não estava retornando true quando a variável era, na verdade, uma string. O seguinte teste:
function test_instanceof() {
var a = "a";
Logger.log('"a" is ' + ((a instanceof String) ? '' : 'not ') + 'a String');
var b = String("b");
Logger.log('String("b") is ' + ((b instanceof String) ? '' : 'not ') + 'a String');
}
Registra essas duas mensagens:
"a" is not a String
String("b") is not a String
Os documentos não são claros no subconjunto de ECMAScript suportado, embora aparentemente instanceof seja um operador válido e String seja um tipo válido, a julgar pelo fato de o código ser executado sem uma exceção.
Qual é a maneira apropriada de verificar o tipo de uma variável?