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