Tagged template — вызов функции «вплотную» к литералу: функция получает куски строки и подставленные значения отдельно и может собрать результат как угодно.
functionhighlight(strings, ...values) {
return strings.reduce(
(out, s, i) => out + s + (i < values.length ? `<b>${values[i]}</b>` : ''),
'',
);
}
highlight`Hello ${'world'}!`;
Первый аргумент — массив строковых частей (с .raw для сырых escape). Дальше — значения интерполяций.
Tag даёт контроль над сборкой шаблона: не просто склейка, а парсинг/экранирование/трансформация.
Библиотеки вроде styled-components или graphql используют tag, чтобы на этапе сборки/рантайма разобрать литерал. На собеседовании достаточно объяснить сигнатуру (strings, ...values) и зачем отделять статику строки от динамических вставок (например, для экранирования только values).
Что такое tagged templates и зачем они нужны? · Sobeso