Добавление типизации параметра функции создания задачи

Аргументу подходит Omit<Todo, 'id'>: вызывающий передаёт title и done, а функция сама добавляет числовой id. Возвращаемое значение стоит явно типизировать как Todo.

Короткий ответ

Что ответить на собеседовании

Аргументу подходит Omit<Todo, 'id'>: вызывающий передаёт title и done, а функция сама добавляет числовой id. Возвращаемое значение стоит явно типизировать как Todo.

Подробный разбор

Ответ с пояснениями

Условие

Требуется обеспечить строгую типизацию входного параметра функции createNewTodo. Для этого необходимо заменить тип any на подходящий тип, описывающий структуру объекта задачи.

interface Todo {
    id: number;
    title: string;
    done: boolean;
}

const createNewTodo = (todo: any) => {
    const id = uscId();
    return ({
        ...todo, id
    }
}

Определите корректный тип для аргумента todo, чтобы функция возвращала объект, соответствующий интерфейсу Todo.

Ответ

Аргументу подходит Omit<Todo, 'id'>: вызывающий передаёт title и done, а функция сама добавляет числовой id. Возвращаемое значение стоит явно типизировать как Todo.

interface Todo { id: number; title: string; done: boolean; }
let nextId = 1;
const createNewTodo = (todo: Omit<Todo, 'id'>): Todo => {
  const id = nextId++;
  return { ...todo, id };
};

Локальный счётчик показан лишь как пример числового генератора; для постоянного хранения уникальность должен обеспечивать сервер. uscId в исходнике не определён, а закрывающая скобка return пропущена. Если имелся в виду React useId, он возвращает строку и предназначен не для генерации ключей данных. Omit задаёт статический контракт, но не удаляет лишние поля входного объекта во время исполнения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее