Saltar al contenido

La propiedad ‘entradas’ no existe en el tipo ‘ObjectConstructor’

Hola, hallamos la solución a tu interrogante, has scroll y la verás un poco más abajo.

Solución:

Tienes toda la razón en que cambiar target es el enfoque equivocado y el cambio lib es el enfoque correcto, sin embargo, ha especificado la versión incorrecta del idioma. Según MDN, Object.entries se agregó oficialmente en la especificación ES2017.

"lib": ["es2017"]

es por lo tanto lo que debe especificar en su lugar*.

Si desea agregar solamente las declaraciones de los métodos de la Object función que eran añadido en ES2017, TypeScript le permite especificar un valor más granular.

"lib": ["es2017.object"]

Como señaló Alexander Bird, por defecto, el valor implícito de la "lib" La opción depende del valor especificado para "target" si está presente.

Por ejemplo:

"target": "es2017"

Causará el prefijo correspondiente "lib.*" incluirse por defecto a menos que "lib" se especifica explícitamente.

Tenga en cuenta que probablemente desee agregar un polyfill de la implementación en sí, como este, para asegurarse de que esto funcione en tiempos de ejecución más antiguos.

Nota: como alternativa puede especificar cualquier versión posterior

"lib": ["es2020"]

o naturalmente incluso

"lib": ["esnext"] 

Este último incluirá las declaraciones de las funciones de biblioteca estándar más recientes conocidas en el lenguaje TypeScript. Como representa un objetivo en movimiento, esta opción debe usarse con cuidado, ya que polillenar todo el tiempo de ejecución correspondiente es, por definición, una tarea compleja que requerirá investigación y puede implicar cargar diferentes polirrellenos según el tiempo de ejecución de destino.

Además, el array naturaleza de la "lib" La opción le permite combinar múltiples valores para que coincidan con su tiempo de ejecución. Por ejemplo, para hacer coincidir los navegadores web compatibles con es2015 con la adición de estos métodos de objetos proporcionados por un polyfill, puede escribir

"lib": ["es2015", "es2017.object", "dom"]

Consulte el Manual de TypeScript para obtener detalles adicionales.

Nota: algunos comentaristas preguntaron por qué estaría mal cambiar --target en vez de --lib ya que ambos habilitarían el código para escribir verificación? La razón es que --target cambia la forma en que se transpila el código. Por ejemplo, "target": "es2017" significa que async las funciones no se transformarán para tiempos de ejecución más antiguos. Es incorrecto porque la intención era habilitar el uso de bibliotecas adicionales, no cambiar la sintaxis de salida y, por lo tanto, es importante distinguir entre funciones sintácticas y funciones de biblioteca.

La respuesta aceptada no funcionó para mí, pero adapté la respuesta de Property ‘assign’ does not exist on type ‘ObjectConstructor’ así:

const changedFields = (Object).entries(this.ngForm.form.controls)
                                   .filter(value => value[1].dirty);

Compartiendo para cualquier persona con la misma situación.

valoraciones y reseñas

Recuerda que puedes optar por la opción de agregar una reseña si te fue preciso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *