Для наглядности решаем задачки в сервисе https://www.typescriptlang.org/ Начнем с простой задачи на типизацию функции, проставляем решение в места с ... const X = {a:1, b:2, c: 3}; function getProperty<...>(obj: ..., key: ...): ... { return obj[key]; } getProperty(X, 'c'); Решением делитесь в комментариях Также типизируем функцию, но задачка гораздо сложней: в TODO добавь корректные дженерики и типы параметров/возврата: const X = { a: 1, b: 'bee', c: true, d: { n: 42 } }; function getMany(/* TODO */) { return keys.map(k => obj[k]) as any; } const t1 = getMany(X, ['a', 'c'] as const); // ✅ Ожидается: [number, boolean] const t2 = getMany(X, ['b', 'd', 'a'] as const); // ✅ Ожидается: [string, { n: number }, number] const t3 = getMany(X, [] as const); // ✅ Пустой кортеж const t4 = getMany(X, ['a', 'z'] as const); // ⛔ Ошибка типов: 'z' не ключ объекта X const xs = ['a', 'c'] as const; // ⛔ Ошибка типов: порядок и длина должны сохраняться (ожидается кортеж, а не массив any[]) const t
Подготовка к собеседованию frontend (Задачки по typescript)
24 сентября24 сен
1
~1 мин