Sobes.tech
Middle+

/* Escreva o tipo MyRequired — torna todos os campos opcionais obrigatórios */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }

sobes.tech IA

Resposta da IA

O tipo MyRequired<T> pode ser implementado usando tipos mapeados em TypeScript, removendo o modificador ? de todas as propriedades de T. Isso é feito usando o operador -? antes da chave da propriedade:

// Remove a opcionalidade de todas as propriedades

type MyRequired<T> = {
  [P in keyof T]-?: T[P]
}

// Exemplo de uso

type User = {
  id?: number
  name?: string
}

const user1: MyRequired<User> = { id: 1, name: "John" } // correto
const user2: MyRequired<User> = { id: 1 } // erro, falta a propriedade obrigatória name