'Alternatives to Javascript's with() Statement?

The with() statement is more or less eliminated from modern Javascript. It is not available in strict mode and ES6 modules, TS all that is loaded in strict mode. So what use instead to put unknown variables into a scope?

For example:


function renderTemplateString(template, data) {
    let func
    with(data) {
       func = () => eval('`' + template + '`')
    }
    try {
        return func()
    } catch (error) {
      return `Error in Template ${template}: ${error} in ${JSON.stringify(data)}`
    }
}

console.log(renderTemplateString("foo: ${foo}", {foo: 'bar'}))
// or more realistic:
saveToSearchIndex(templateStringConfigurationOfTheApp, dataFromAnOtherPartOfTheLibrary)

Can the same effect (putting all of data into the scope of eval()) archived without with?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source