TS TypeScript  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Функции и типизация параметров

Вопросы требуют читать код, сопоставлять статические гарантии с поведением JavaScript и выбирать решение, которое не рассыплется при развитии проекта.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 20
Какой тип имеет переменная formatter?
TypeScript
type Formatter = (value: number, unit: string) => string;
const formatter: Formatter = (value, unit) => `${value} ${unit}`;
Вопрос 2 из 20
Почему этот обработчик нельзя вызвать без аргумента?
TypeScript
function greet(name: string) {
  return `Привет, ${name}`;
}

greet();
Вопрос 3 из 20
Какой тип параметра cb сохраняет связь между входом и результатом?
TypeScript
function transform(items: number[], cb: /* ? */) {
  return items.map(cb);
}
Вопрос 4 из 20
Публичная функция принимает обработчик. Почему тип Function считается слишком слабым?
Вопрос 5 из 20
Как описать функцию, которая может принимать дополнительные аргументы от фреймворка, но использует только первый?
Вопрос 6 из 20
Какой тип имеет name внутри тела функции?
TypeScript
function label(name?: string) {
  return name?.trim() ?? "без имени";
}
Вопрос 7 из 20
Чем этот параметр отличается от optional-параметра?
TypeScript
function connect(timeout = 5000) {
  return timeout / 1000;
}
Вопрос 8 из 20
Почему сигнатура вызывает ошибку?
TypeScript
function build(prefix?: string, value: number) {
  return `${prefix ?? ""}${value}`;
}
Вопрос 9 из 20
У функции уже четыре необязательных булевых параметра. Как сделать вызовы понятнее и устойчивее к расширению?
Вопрос 10 из 20
Нужно различать «аргумент не передан» и «передано пустое значение». Какой контракт подходит?
Вопрос 11 из 20
Какой тип имеет параметр parts?
TypeScript
function join(separator: string, ...parts: string[]) {
  return parts.join(separator);
}
Вопрос 12 из 20
Какие вызовы допускает кортежный rest-параметр?
TypeScript
function range(...args: [start: number, end: number] | [end: number]) {
  return args.length === 1 ? [0, args[0]] : args;
}
Вопрос 13 из 20
Почему spread массива не подходит к функции с двумя обязательными параметрами?
TypeScript
function sumPair(a: number, b: number) {
  return a + b;
}
const numbers: number[] = [1, 2];
sumPair(...numbers);
Вопрос 14 из 20
Функция журнала принимает сначала уровень, затем любое число строк. Какая сигнатура точнее?
Вопрос 15 из 20
Когда кортежный rest-параметр полезнее набора перегрузок?
Вопрос 16 из 20
Какой выведенный тип результата у функции parse?
TypeScript
function parse(value: string) {
  if (value === "") return undefined;
  return Number(value);
}
Вопрос 17 из 20
Почему аннотация Promise<string> здесь полезна?
TypeScript
async function loadTitle(): Promise<string> {
  const response = await fetch("/title");
  if (!response.ok) return undefined;
  return response.text();
}
Вопрос 18 из 20
Какой тип результата точнее для функции?
TypeScript
function fail(message: string) {
  throw new Error(message);
}
Вопрос 19 из 20
Когда стоит явно указывать тип возвращаемого значения локальной короткой функции?
Вопрос 20 из 20
Функция колбэка объявлена как () => void, но переданная реализация возвращает число. Почему это часто допустимо?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу