76 votos

¿Cómo usar Object.values con mecanografiado?

Estoy tratando de formar una cadena separada por comas de un objeto,

 const data = {"Ticket-1.pdf":"8e6e8255-a6e9-4626-9606-4cd255055f71.pdf","Ticket-2.pdf":"106c3613-d976-4331-ab0c-d581576e7ca1.pdf"};
const values = Object.values(data).map(x => x.substr(0, x.length - 4));
const commaJoinedValues = values.join(',');
console.log(commaJoinedValues);
 

¿Cómo hacer esto con TypeScript?

obteniendo un archivo de error:

 severity: 'Error'
message: 'Property 'values' does not exist on type 'ObjectConstructor'.'
at: '216,27'
source: 'ts'
 

56voto

holi-java Puntos 14743

usando Object.keys en su lugar.

 const data = {
  a: "first",
  b: "second",
};

const values = Object.keys(data).map(key => data[key]);

const commaJoinedValues = values.join(",");
console.log(commaJoinedValues);
 

8voto

mtpultz Puntos 403

Puede usar Object.values en TypeScript haciendo esto (<any>Object).values(data) si por alguna razón no puede actualizar a ES7 en tsconfig.

8voto

Kian Puntos 94

En vez de

 Object.values(myObject);
 

utilizar

 Object["values"](myObject);
 

En su caso de ejemplo:

 const values = Object["values"](data).map(x => x.substr(0, x.length - 4));
 

Esto ocultará el error del compilador de ts.

3voto

Neil Stevens Puntos 1012

Acabo de abordar este problema exacto con Angular 6 usando la CLI y los espacios de trabajo para crear una biblioteca usando ng g library foo .

En mi caso, el problema estaba en tsconfig.lib.json en la carpeta de la biblioteca que no tenía es2017 incluido en la sección lib .

Cualquiera que se encuentre con este problema con Angular 6, solo necesita asegurarse de actualizar su tsconfig.lib.json así como su aplicación tsconfig.json

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X