У меня есть эта функция, которую можно использовать как тегированный литерал:
function stringTemplate(strings, ...keys) {
// Oggetto contenente i valori da interpolare
return dict => {
return keys.reduce(
(acc, value, idx) => `${acc}${dict[value]}${strings[idx + 1]}`,
strings[0],
)
}
}
, и я хочу использовать вот так:
const template = `Foo ${'a'} baz`
stringTemplate`${template}`({ a: 'bar' })
, но она возвращает undefined
Чтобы заставить его работать, нужно использовать eval , например:
const template = `Foo ${'a'} baz`
eval(`string = stringTemplate${template}({ a: 'bar' })`)
, но я бы хотел избежать eval, потому что шаблон поступает из внешнего API.