Por ejemplo,
//define a template literal let template = `Hello {target}`; //Then reuse it, just examples to show the idea let str1 = Format(template, "World");//str1 becomes "Hello World" let str2 = Format(template, "There");//str2 becomes "Hello There" let str3 = Format(template, "There Again");//str3 becomes "Hello There Again" Por cierto, es una práctica común reutilizar plantilla cadena por cadena. string.Format en C#:
string template = `Hello {0}`; string str1 = string.Format(template, "World");//str1 becomes "Hello World" string str2 = string.Format(template, "There");//str2 becomes "Hello There" string str3 = string.Format(template, "There Again");//str3 becomes "Hello There Again"La pregunta es, ¿se puede hacer con ES6?
Se puede hacer de manera similar usando una función:
function GetHelloStr(target){ return `Hello ${target}`; } let str1 = GetHelloStr("World"); let str2 = GetHelloStr("There"); let str3 = GetHelloStr("There Again"); Pero en este caso, la cadena de plantilla no se reutiliza. Cada llamada de GetHelloStr creará una nueva cadena, que no funciona.
Se puede hacer de manera similar mediante plantillas etiquetadas.
function HelloStr(strings, target){ return `Hello ${target}`; } let str1 = HelloStr`${'World'}`; let str2 = HelloStr`${'There'}`; let str3 = HelloStr`${'There Again'}`;Esto tampoco reutiliza la cadena de plantilla. Prefiero usar el enfoque de función.
También encontré una biblioteca que maneja exactamente estos casos: https://github.com/davidchambers/string-format
Lamentablemente, ninguno de ellos es tan elegante como una cadena. string.Format de C#.