In this post, we are going to learn javaScript ES6 Template literals and string interpolation with examples.
What is Template literal?
Template literal was Introduced in ES6(2015), Earlier, we used to create a string using single quotes (‘) or double quotes (“) quotes. But creating a string this way has some limited functionality. Template literal gives us more facility to create a dynamic string. Template literal use back-ticks(“) to define a string as shown below
string sentence = `Let work with string using Template literal`
Benefits using Template literal
- String Substitution/Interpolation
- Multiline String
- Template Tag
1. String Substitution/Interpolation
The Template literal uses a placeholder to create string substitution and Interpolation is indicated by a dollar sign and curly braces ${`expression `}.
String substitution makes us combine variables’ names and expressions in the string. During run-time variables, names and expressions replace with their values. This is known as an interpolation in JavaScript.
String Substitution
const mycity = 'California'
const fullstring = `my city is ${mycity}`
console.log(fullstring)
Output
my city is California
Template literal with expression Interpolation
var num = 20
var num2 = 30
//Expression to add two numbers
console.log(`sum = ${num+num2}`);
//Expression to multiply two numbers
console.log(`multiplication = ${2 * (num + num2)} `);
Output
sum = 50
multiplication = 100
Template Literal using function as Expression
In this example, we are passing the Sum() function as an expression in Template literal.
function sum()
{
var num = 20,num2 = 30
var sum = num+num2
return sum;
}
console.log(`sum = ${sum()}`);
Output
sum = 50
2. Multi-line string
Prior to ES6 to span string in multi-line, we used to do some workaround by adding newline character(\n) end of each line.
Note: backslash(\) used to show the continuation of string onto multiple lines indication in string consider as white-space.
var announcement= 'This is announcement \n\
Pay attention';
console.log(announcement)
Output
This is announcement
Pay attention
With ES6 Template literal, we can achieve the same just by pass string back-ticks(“) no need to use \n.
var announcement= `This is announcement
Pay attention`;
console.log(announcement)
Output
This is announcement
Pay attention
3.Tagged Template
The tag template is one of the strong features of Template Literal. We use a tagged template to create a Tag template that behaves like a function using template literal, unlike function Tag Template does not use parathesis() when it is called.
The first argument of the tag template function is an array of strings literal, remaining arguments describe expression.
Syntax
function TagTemplate(literals, ...expressions) {
//return string after computation
}
- literal: The first parameter is an array of template strings. The array of template string is split using Expression as a separator.
- Expression: The second parameter is the rest array parameter.
Return
- The Tag template function performs any operation on given arguments and returns a string.
Example
In the above example, tagTemplatefun is a Template Tag Function. The first argument Strs is an array of a string literal. The second argument in this is the expression that we are passing as a country.
country = 'US'
function tagTemplatefun(strs, country) {
let outString = ''
strs.forEach((value, i) => {
outString += `${strs[i]} ${country}`
})
return outString;
}
//calling the tag template function without parathesis
const paragraph = tagTemplatefun`The ${country} is a powerful country, English is the native language of`;
console.log(paragraph);
Output
The US is a powerful country, English is native language of US
Example
In this example, we are printing array string of literal and Second parameters expression
let country = "US"
let capital = "washington"
let population = "328.2 million"
function tagTemplatefun(strs, ...expressions)
{
console.log('Array of strings =',strs);
console.log('expressions=',expressions)
}
//calling the tag template function without para-thesis
tagTemplatefun`The ${country} is a powerful country, capital is ${capital}${population}`;
Output
Array of strings = [ 'The ', ' is a powerful country, capital is ', '', '' ]
expressions= [ 'US', 'washington', '328.2 million' ]
2. Library Used Tag Template
- GraphQL
- The Styled Components library use the Tag Template to define CSS-Style for React components
import styled from 'styled-components'
const Button = styled.button`
background-color: red;
color: blue;
`
Raw Strings
The String. raw method uses the Tagged Template function to get the raw version of the Template string and prevent any escape sequence from being processed.
Let us understand with example
let country = "US"
let capital = "washington"
let population = "328.2 million"
var fullstring = String.raw `This is \n${country}, capital ${capital} population is ${population}!`;
console.log(fullstring);
Output
This is \nUS, capital washington population is 328.2 million!