Tengo un archivo utils/constant.js con:
// Key of total elements in remote collection export const TOTAL_ELEMENTS = "totalElements"; Necesito acceder a totalElements a través de la constante.
import { TOTAL_ELEMENTS } from "./constants.js"; [...] let data = { content: "foo", totalElements: 54 }; if(TOTAL_ELEMENTS in data) { // pseudocode, of course it doesn't work. // of course in my case need to return 54 const { TOTAL_ELEMENTS } = data; return TOTAL_ELEMENTS; }Editar: como mencionó @pilchard , usar Object.prototype.hasOwnProperty es una mejor manera de hacer esto en caso de que el valor sea falso:
if (data.hasOwnProperty(TOTAL_ELEMENTS)) { return data[TOTAL_ELEMENTS] } Respuesta original: si bien la respuesta proporcionada por @jsN00b funciona y está más cerca del código @sineverba de OP, aquí hay un problema ya que in operador verifica la propiedad especificada tanto en el objeto especificado como en su cadena de prototipo.
Esto significa que, por ejemplo, si el prototipo de los data es Object.prototype , algo como 'toString' in data también funcionaría.
Por esa razón, podría usar algo como lo siguiente para verificar solo la clave 'totalElements' en el objeto mismo y evitar la desestructuración:
if (data[TOTAL_ELEMENTS]) { return data[TOTAL_ELEMENTS] }El objetivo deseado es:
TOTAL_ELEMENTS (y no directamente el nombre de la propiedad)data tienen la propiedad correspondienteEl siguiente código de ejemplo puede ser una solución para lograr el objetivo deseado:
if (TOTAL_ELEMENTS in data) return data[TOTAL_ELEMENTS];
NOTA Lo anterior no de-structure los datos. Accede al prop correspondiente directamente sin necesidad de desestructurar.