es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Typescript no está detectando los campos opcionales de Prisma.

Estoy creando archivos de semilla para mi proyecto NestJS, pero Typescript no se compila porque no detecta que algunos campos son opcionales en el Prisma Client.

Este es un ejemplo de un modelo con el que estoy teniendo problemas:

“`model Company {
companyId Int @id @default(autoincrement())
name String
address String?
email String?
isActive Boolean @default(true)
managers CompanyUser[]
locations Location[]
}

<pre><code><br />Entonces intento crear un arreglo de Empresas, algo como esto:

“`import { Company, PrismaClient } from “@prisma/client”;

const prisma = new PrismaClient();

const companies: Array<company> = [
{
companyId: 1,
name: “The Best Gym Ever”,
},
];

export const locationsSeed = async () => {
companies.forEach(async (company) => {
try {
await prisma.company.create({
data: company,
});
} catch (e) {
console.error(e);
}
});
};

Pero obtengo el siguiente error: Type '{ companyId: number; name: string; }' is missing the following properties from type 'Company': address, email, isActive (2739)

¿Qué puedo hacer para resolverlo ya que estos campos son opcionales o ya tienen opciones predeterminadas?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que el código compile con TypeScript, puedes marcar explícitamente los campos opcionales como undefined en el archivo de semilla o modificar el archivo tsconfig.json para permitir verificaciones de nulos más estrictas.

    Opción 1: Marcar los campos opcionales como undefined
    Dado que el mensaje de error indica que los campos faltantes son opcionales, simplemente puedes marcarlos como undefined en el archivo de semilla de esta manera:

    const companies: Array<company> = [
      {
        companyId: 1,
        name: "The Best Gym Ever",
        address: undefined,
        email: undefined,
      },
    ];
    

    Opción 2: Modificar tsconfig.json
    Si prefieres no agregar undefined para los campos opcionales en el archivo de semilla, puedes modificar el archivo tsconfig.json para permitir verificaciones de nulos más estrictas. Esto se puede hacer cambiando el indicador strictNullChecks a false:

    {
      "compilerOptions": {
        "strictNullChecks": false
      }
    }
    

    Sin embargo, ten en cuenta que esto también desactivará algunas de las verificaciones de seguridad de TypeScript, así que úsalo con precaución.

Comments are closed.