Digamos que tenemos un objeto
export const hello = { a: 1, b: 2 }y lo importamos y tenemos una función
import { hello } from ... function printVarName(x) { ... } printVarName(hello.b)¿Cómo podemos convertir hello.b en una cadena 'hello.b'?
El objetivo de poder crear la cadena 'hello.b' a partir de la variable x dentro de printVarName en este ejemplo.
Esto es imposible. Vea la respuesta a: Determinar el nombre original de la variable después de pasarla a una función
No hay forma de saber cuál es el nombre original de una variable después de que su valor se haya pasado a una función.
Lo más parecido que se me ocurre es lo siguiente:
La solución implica instalar el paquete dot-prop que está diseñado para analizar cadenas y encontrar la propiedad asociada en un objeto. https://www.npmjs.com/package/dot-prop
Descargo de responsabilidad: no tengo ninguna asociación con el paquete en sí
También implica cambiar su implementación, ya que ahora también necesita pasar el objeto al que hace referencia.
import { getProperty } from 'dot-prop'; import { hello } from ... function printVarName(obj, path) { const value = getProperty(obj, path); console.log(path, value); } printVarName({hello}, 'hello.b')Estamos haciendo una asignación de desestructuración en el objeto proporcionado como primer parámetro.
Pasar { hello } pasará un objeto que es igual a { hello: hello } y, por lo tanto, cuando usa el método getProperty , puede encontrar la variable hola y sus valores anidados.
El primer parámetro es necesario si va a pasar variables desde fuera del alcance de la definición de la función. De lo contrario, puede crear un objeto constante con todos los valores de las variables y eso le permitiría eliminar la necesidad del primer parámetro donde proporciona el objeto.