Sobes.tech
Middle+

/* Γράψτε τον τύπο MyRequired — καθιστά όλα τα προαιρετικά πεδία υποχρεωτικά */ 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 AI

Απάντηση από AI

Ο τύπος MyRequired<T> μπορεί να υλοποιηθεί χρησιμοποιώντας mapped types σε TypeScript, αφαιρώντας τον τροποποιητή ? από όλα τα χαρακτηριστικά του T. Αυτό γίνεται με τη χρήση του τελεστή -? πριν από το κλειδί του χαρακτηριστικού:

// Αφαιρούμε την προαιρετικότητα από όλα τα χαρακτηριστικά

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

// Παράδειγμα χρήσης

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

const user1: MyRequired<User> = { id: 1, name: "John" } // σωστό
const user2: MyRequired<User> = { id: 1 } // σφάλμα, λείπει το υποχρεωτικό πεδίο name