Em JavaScript, as template strings permitem incorporar expressões em strings, o que também se designa por interpolação de strings.
Esta funcionalidade estende a do objeto global incorporado String.
Podes criar template strings em JavaScript envolvendo o texto em acentos graves. Além de permitirem que o texto inclua novas linhas e outros carateres especiais, também te deixam incorporar variáveis e outras expressões.
const num1 = 1;
const num2 = 2;
`Adding ${num1} and ${num2} gives ${num1 + num2}.`;
// => Adding 1 and 2 gives 3.
No exemplo acima, os acentos graves (``) são usados para representar uma template string. O ${...} é o marcador de posição usado para a substituição.
Todos os tipos que não sejam strings são convertidos implicitamente em strings.
Este tópico é abordado no conceito conversão de tipos.
Todos os tipos de expressões podem ser usados com template strings.
const track = 'JavaScript';
`This track on exercism.org is ${track.toUpperCase()}.`;
// => This track on exercism.org is JAVASCRIPT.
Quando precisas de formatar strings em várias linhas:
`This is an example of using template
strings to accomplish multiple
lines`;
Com as capacidades de substituição disponíveis, também podes introduzir lógica no processo para determinar qual deve ser a string final.
Um exemplo disto é incorporar um operador ternário.
Este operador é uma forma abreviada de escrever uma instrução if/else.
A sintaxe é condition ? consequent-expression : alternative-expression.
Se a condição for verdadeira, devolve-se o operando do lado esquerdo dos dois pontos.
Caso contrário, o resultado da expressão ternária é o operando do lado direito dos dois pontos.
const grade = 95;
`You have ${grade > 90 ? 'passed' : 'failed'} the exam.`;
// => You have passed the exam.
Neste exercício vais escrever código para ajudar uma empresa de placas a criar mensagens personalizadas para as suas placas.
Implementa a função buildSign(occasion, name), que recebe uma string como parâmetro occasion e uma string com o nome de alguém como parâmetro name.
Os dois parâmetros serão incorporados numa template string para produzir a mensagem na placa.
buildSign('Birthday', 'Rob');
// => "Happy Birthday Rob!"
Implementa a função buildBirthdaySign(age), que recebe uma idade e, com base nessa idade, determina parte da mensagem na placa.
Se a idade for 50 ou mais, a placa refere o utilizador como mature; caso contrário, refere-o como young.
O resultado esperado exato é mostrado abaixo:
buildBirthdaySign(50);
// => "Happy Birthday! What a mature fellow you are."
buildBirthdaySign(45);
// => "Happy Birthday! What a young fellow you are."
Implementa a função graduationFor(name, year), que recebe um nome como parâmetro string e um ano como parâmetro numérico, e utiliza interpolação de strings para criar uma frase para uma placa, com uma nova linha a separar as duas linhas da mensagem.
graduationFor('Hannah', 2022);
/* => "Congratulations Hannah!
Class of 2022"
*/
Implementa a função costOf(sign, currency), que recebe uma string com o conteúdo da placa e uma string que representa a moeda.
A placa tem um preço base de 20 na moeda indicada. Além disso, cada letra custa 2. (Os espaços em branco também contam para o cálculo.)
A frase devolvida inclui o custo de criação da placa, escrito com duas casas decimais, seguido da string da moeda.
costOf('Happy Birthday Rob!', 'dollars');
// => "Your sign costs 58.00 dollars."
Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.