Аргументу подходит 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 задаёт статический контракт, но не удаляет лишние поля входного объекта во время исполнения.