Kali ini saya ada bahasan sedikit mengenai template literal, masih dari fitur Javascript yang ditambahkan sejak EcmaScript 6.
Salah satu yang sering kita lakukan saat membuat aplikasi adalah menggabungkan string dengan hasil ekspresi, misalnya untuk menampilkan pesan error atau informasi. Misalnya menulis halaman “Selamat datang, Akdani”, di mana kata “Akhdani” diambil dari data pengguna yang login ke aplikasi. Pada javascript ES5, kita menulisnya seperti ini:
var nama = “Akhdani”; var pesan = “Selamat datang, " + nama + “!”; console.log(pesan); // “Selamat datang, Akhdani!”
Nah, sekarang kita bisa menggunakan template literal ini sehingga kita bisa mengurangi penggunaan simbol operator tambah. Kita bisa menulis kalimat yang sama tanpa menggunakan simbol operator tambah, hanya saja kita harus menggunakan backtick (`), lokasi tombolnya pada keyboard ada di sebelah kiri angka 1. Contohnya:
var nama = “Akhdani”; var pesan = `Selamat datang, ${nama}!`; console.log(pesan); // “Selamat datang, Akhdani!”
Untuk string dengan banyak baris, kita bisa langsung menuliskan string pada kode dalam bentuk banyak baris tanpa menggunakan ‘\n’, tapi tetap menggunakan backtick. Contoh:
console.log(`Nama saya Akhdani saya bekerja di Akhdani Reka Solusi`); // “Nama saya Akhdani // saya bekerja di Akhdani Reka Solusi”
Untuk bentuk yang lebih lanjut, ada tagged template. Dengan tag ini bisa mengolah template literal menggunakan fungsi. Contoh:
function myTag(strings, nama, umur){ var str1 = strings[0]; var str2 = strings[1]; var str3 = strings[2]; return `${str1}${nama}${str2}${umur}${str3}`; }; var nama = “Akhdani”; var umur = 28; var hasil = myTag`Halo, nama saya ${nama}, umur saya ${umur} tahun.`; console.log(hasil); // “Halo, nama saya Akhdani, umur saya 28 tahun.”;
Untuk tag di atas, kalau masih bingung bagaimana pemetaan dari string yang diberi tag ke dalam argumen fungsi tagnya, begini caranya:
- String selain hasil interpolasi akan masuk sebagai argumen pertama dalam bentuk array, untuk contoh di atas, terdiri dari 3, yaitu:
- “Halo, nama saya “;
- “, umur saya “;
- ” tahun.”
- Ekspresi interpolasi (${nama} dan ${umur}) akan masuk sebagai argumen sisanya yang terpisah, tidak dalam satu array;
Oh ya ketinggalan, kalau ingin ada backtick di dalam template ini, bisa di-escape dengan backslash..
`\`` === '`' // --> true
Sepertinya fitur ini akan sangat berguna apabila aplikasi kita banyak menuliskan string yang terdapat bagian yang merupakan hasil ekspresi kode program. Setidaknya yang akan sering dipakai adalah sintak dasar.
Sekian saja postingan pendek kali ini. semoga bermanfaat. 🙂