Tengo una propiedad de un objeto que siempre es una cadena. Sin embargo, la cadena podría ser solo caracteres regulares o podría contener una matriz de valores en forma de cadena.
Si es una cadena regular de caracteres, entonces solo quiero pasar el valor, pero si es una matriz, entonces quiero procesarla en su forma de matriz.
Puedo usar JSON.parse(myValue) que es excelente para extraer una matriz, pero arroja un error si es una cadena normal.
Tal vez podría hacer algo como:
let extractedVal = ''; try { extractedVal = JSON.parse(myValue) } catch (e) { extractedVal = myValue } pero esto no se siente bien ya que la variable let se siente desordenada y el intento/atrapar se siente como si no se usara correctamente ya que no estoy haciendo nada con el error, etc.
¿Hay una mejor manera o una mejor práctica sugerida para lograr esto?
Usar un try / catch en esta situación está bien. Sin embargo, no asignaría un valor inicial a la variable extractedVal , ya que la está reasignando en ambas ramas, simplemente elimine ese = '' inicializador.
Podrías cambiarlo un poco:
let extractedVal = value; try { extractedVal = JSON.parse(extractedVal); // ...more processing here... } catch { // ...ignore... }pero, francamente, creo que su original es igual de claro, aquí con un par de ajustes:
let extractedVal; try { extractedVal = JSON.parse(value); // ...more processing here... } catch { extractedVal = value; }