Chicos en Angular 11 no deja hacer la definición de tipo sin asignar valor Este es el error error TS2322: Type ‘Product | undefined’ is n...

Sergio Esteban Diaz Guerrero

Sergio Esteban Diaz Guerrero

Pregunta
studenthace 4 años

Chicos en Angular 11 no deja hacer la definición de tipo sin asignar valor

Este es el error

error TS2322: Type ‘Product | undefined’ is not assignable to type ‘Product’.

Type ‘undefined’ is not assignable to type ‘Product’.

Mi solución fue dejarle un any en lugar de product, pero, alguno sabe de alguna forma mas elegante de solucionar estas cosas ?

6 respuestas
para escribir tu comentario
    Cristian Blandón

    Cristian Blandón

    studenthace 4 años

    La idea es no quitar el strict, justamente porque TypeScript provee una ventaja para evitar errores en tiempo de desarrollo. En mi caso, lo solucioné simplemente inicializando products a un array vacío:

    products: Product[] = [];

    Sin cambiar nada de la configuración de TypeScript... Teniendo en cuenta que lo único que te piden es inicializar el atributo.

    Sergio Esteban Diaz Guerrero

    Sergio Esteban Diaz Guerrero

    studenthace 4 años

    Chicos muchas gracias a todos, yo lo solucione con el !

    jorge llanque

    jorge llanque

    studenthace 4 años

    Yo lo solucioné así

    product: Product | undefined;
    Daniel Meza

    Daniel Meza

    studenthace 4 años

    Es parte de que trabajemos estrictamente con el tipado. Y como lo menciona @Andresdst. Se soluciona colocando el signo cierre de admiración. Esto le dice a angular "No te preocupes, todo estará bien"

    Otra de las soluciones es la de @AlexFalcon. Y es deshabilitar el modo estricto.

    Otra solución, es inicializarlo. No estoy seguro si ahí mismo o desde el constructor. Pero hazlo, lo más seguro es que definas eso después, por lo que podrías inicializarlo con un 'null'

    Andres David Sanchez

    Andres David Sanchez

    studenthace 4 años

    o al declarar la variable product especificas su tipo de la siguiente forma: product!: Product

    Alex Stefano Falcon Flores

    Alex Stefano Falcon Flores

    studenthace 4 años

    Ve a tsconfig.json y ya dentro buscas "strict": true si te aparece en true , cambialo a false guardas y listo. No tendrias probblemas al declarar Product.

Curso de Angular [Empieza Gratis]

Curso de Angular [Empieza Gratis]

Entiende los conceptos fundamentales de Angular 8. Conoce la arquitectura de este Framework para que programes aplicaciones web con sus mejores prácticas. Conecta tus aplicaciones con una API para obtener datos de un sistema de Backend. Crea una tienda en línea y publícala en Internet con Firebase.

Curso de Angular [Empieza Gratis]
Curso de Angular [Empieza Gratis]

Curso de Angular [Empieza Gratis]

Entiende los conceptos fundamentales de Angular 8. Conoce la arquitectura de este Framework para que programes aplicaciones web con sus mejores prácticas. Conecta tus aplicaciones con una API para obtener datos de un sistema de Backend. Crea una tienda en línea y publícala en Internet con Firebase.