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