Выбор ответа Middle tsconfig и декларации обновлено
target и полифиллы
Вопрос
В tsconfig стоит "target": "es5" и "lib": ["es2022", "dom"]. Что tsc сделает с вызовом .at()?
const list = [1, 2, 3];
const last = list.at(-1);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Оставит как есть: tsc понижает синтаксис, но не добавляет полифиллы. target управляет только синтаксисом: стрелки, классы, ?. будут переписаны под ES5.
Варианты ответа
- Оставит как есть:
tscпонижает синтаксис, но не добавляет полифиллыправильный ответ - Выдаст ошибку компиляции: в ES5 метода
atнет, иlibэто не меняет - Заменит на
list[list.length - 1], раз target старше ES2022 - Добавит полифилл
Array.prototype.atв начало выходного файла
Разбор
target управляет только синтаксисом: стрелки, классы, ?. будут переписаны под ES5. Новые методы стандартной библиотеки TypeScript не реализует и полифиллов не добавляет, вызов останется list.at(-1) и упадёт в старом браузере.
Ошибки нет, потому что lib с es2022 разрешает этот метод в типах. Полифиллы подключают отдельно (core-js) или полагаются на поддержку браузеров.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.