Sobes.tech
Middle

/** * Тапшырма 1: Генериктер жана Ключ Тип Коопсуздугу * Объект жана ачкыч кабыл алган `getProperty` функциясын түзүңүз. * Функциянын тип коопсуздугун камсыз кылуу жана ачкыч объектте бар экенин камсыз кылуу үчүн генериктерди колдонуңуз. */ function getProperty<T extends Record<string, unknown>, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } getProperty('str', 'toString') /** * Тапшырма 2: Төмөндө бир нече Todo интерфейсинин декларациялары берилген, алардын бир эле чөйрөдө болушу эмне болорун түшүндүрүңүз. * TypeScript алардын кандай иштээрин талкууланыз жана бириктирилген Todo интерфейсинин талаптарына жооп берүү үчүн `myTodo` объектин толтуруңуз. */ interface Todo { title: string; dueDate: Date; } interface Todo { description: string; completed: boolean; }

sobes.tech AI

AIден жооп

Задача 1: Функция getProperty использует дженерики и ограничение K extends keyof T, чтобы гарантировать, что ключ key существует в объекте obj типа T. Это обеспечивает типобезопасный доступ к свойствам объекта.

Пример функции:

function getProperty<T extends Record<string, unknown>, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

const result = getProperty({name: 'Alice', age: 30}, 'name'); // тип string

Вызов getProperty('str', 'toString') корректен, так как у строки есть метод toString.


Задача 2: В TypeScript несколько деклараций интерфейса с одинаковым именем в одной области видимости объединяются (merged). Это значит, что итоговый интерфейс Todo будет содержать все свойства из обеих деклараций:

interface Todo {
  title: string;
  dueDate: Date;
  description: string;
  completed: boolean;
}

Чтобы объект myTodo соответствовал объединённому интерфейсу, нужно определить все эти свойства:

const myTodo: Todo = {
  title: 'Learn TypeScript',
  dueDate: new Date('2024-12-31'),
  description: 'Study advanced TypeScript features',
  completed: false
};

Таким образом, декларации интерфейсов в TypeScript можно расширять путём повторного объявления, что удобно для постепенного добавления свойств.