Выбор ответа Middle tsconfig и декларации обновлено

target и полифиллы

Вопрос

В tsconfig стоит "target": "es5" и "lib": ["es2022", "dom"]. Что tsc сделает с вызовом .at()?

const list = [1, 2, 3];
const last = list.at(-1);

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Оставит как есть: tsc понижает синтаксис, но не добавляет полифиллы. target управляет только синтаксисом: стрелки, классы, ?. будут переписаны под ES5.

Варианты ответа

  1. Оставит как есть: tsc понижает синтаксис, но не добавляет полифиллыправильный ответ
  2. Выдаст ошибку компиляции: в ES5 метода at нет, и lib это не меняет
  3. Заменит на list[list.length - 1], раз target старше ES2022
  4. Добавит полифилл Array.prototype.at в начало выходного файла

Разбор

target управляет только синтаксисом: стрелки, классы, ?. будут переписаны под ES5. Новые методы стандартной библиотеки TypeScript не реализует и полифиллов не добавляет, вызов останется list.at(-1) и упадёт в старом браузере.

Ошибки нет, потому что lib с es2022 разрешает этот метод в типах. Полифиллы подключают отдельно (core-js) или полагаются на поддержку браузеров.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме