Menu

String di TypeScript: Interpolasi, Multiline dan Contains

Bekerja dengan string di TypeScript: interpolasi dengan template literal, string multiline, mengecek apakah string memuat substring, method yang umum beserta tipe kembaliannya, dan string literal type.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

String di TypeScript adalah string JavaScript dengan tipe string. Untuk interpolasi, tulis template literal: backtick dengan placeholder ${expression}. Tanda kutip tunggal dan ganda membuat string biasa tanpa interpolasi.

Ketiga gaya tanda kutip menghasilkan tipe yang sama, string. $ pertama di $${...} adalah tanda dolar biasa; hanya ${ yang memulai placeholder.

Interpolasi String

Di dalam ${ } kamu bisa menaruh variabel, operasi aritmetika, pemanggilan fungsi, ternary, atau template literal bersarang. Nilainya diubah menjadi string dengan cara yang sama seperti String(value) mengubahnya (symbol adalah pengecualian: menginterpolasinya adalah error kompilasi TS2731, dan akan melempar TypeError saat runtime; tulis String(sym)).

Menginterpolasi object akan mencetak [object Object], yang hampir tidak pernah kamu inginkan. Pilih field-nya, atau pakai JSON.stringify(obj).

String Multiline

Template literal bisa membentang beberapa baris. Baris barunya dipertahankan, begitu juga indentasi di awal setiap baris, karena semua yang ada di antara backtick adalah bagian dari string.

Kalau indentasi kodemu ikut bocor ke dalam string, bangun string-nya dengan array dan join("\n"), atau buat baris template literal itu rata dengan awal baris.

Mengecek Apakah String Memuat Substring

includes menjawab "apakah memuat" dengan boolean. startsWith dan endsWith mengecek bagian awal dan akhir. indexOf memberikan posisinya, atau -1 kalau substring-nya tidak ada. Semuanya case-sensitive.

includes juga menerima posisi awal: file.includes("R", 1) hanya mencari mulai dari index 1.

Method yang Umum dan Tipenya

TypeScript tahu tipe kembalian setiap method bawaan. Yang perlu diperhatikan adalah method yang bisa mengembalikan hasil kosong, karena dengan strict kamu harus menangani null atau undefined sebelum memakai hasilnya.

MethodMengembalikanContoh
includes, startsWith, endsWithboolean"abc".includes("b") adalah true
indexOf, lastIndexOfnumber (-1 kalau tidak ada)"abc".indexOf("c") adalah 2
slice, substringstring"hello".slice(1, 3) adalah "el"
splitstring[]"a,b".split(",") adalah ["a", "b"]
trim, trimStart, trimEndstring" x ".trim() adalah "x"
toUpperCase, toLowerCasestring"Ts".toUpperCase() adalah "TS"
padStart, padEndstring"7".padStart(3, "0") adalah "007"
replace, replaceAllstring"a-b-c".replaceAll("-", "") adalah "abc"
repeatstring"ab".repeat(2) adalah "abab"
atstring | undefined"abc".at(-1) adalah "c"
matchRegExpMatchArray | null"a1".match(/\d/)
length (property)number"abc".length adalah 3

Pengaksesan index biasa, s[5], bertipe string walaupun index-nya melewati batas akhir (dan nilainya undefined saat runtime). Opsi compiler noUncheckedIndexedAccess mengubahnya menjadi string | undefined.

String Bersifat Immutable

Kamu tidak bisa mengubah satu karakter di tempatnya. TypeScript melaporkan assignment ke index sebagai error TS2542, Index signature in type 'String' only permits reading., dan di JavaScript strict mode hasil kompilasinya, assignment yang sama akan melempar TypeError saat runtime. Setiap method yang tampaknya mengubah string sebenarnya mengembalikan string baru.

Untuk mengubah nilai lain menjadi string, atau string menjadi number, lihat string ke number.

String Literal Type

string menerima teks apa pun. String literal type hanya menerima satu nilai yang persis, dan union dari beberapa literal membentuk himpunan string yang diizinkan, mirip enum:

Literal type hanya dicek saat kompilasi; saat runtime label("deleted") tetap akan berjalan dan mencetak Post is deleted, dan itulah yang dilakukan baris kedua di sini. Sintaks template literal juga bekerja di level tipe, seperti type EventName = `on${string}`, yang menerima string apa pun yang diawali on.

Pertanyaan yang sering diajukan

Bagaimana cara melakukan interpolasi string di TypeScript?

Pakai template literal: backtick dengan placeholder ${expression}, seperti `Hello, ${name}!`. Ekspresi apa pun bisa ditaruh di dalam kurung kurawal, dan hasilnya bertipe string. Tanda kutip tunggal dan ganda tidak melakukan interpolasi.

Bagaimana cara menulis string multiline di TypeScript?

Taruh teksnya di dalam backtick dan pecah barisnya di kode sumber: template literal mempertahankan baris baru sekaligus indentasi di awal setiap baris. Sebagai alternatif, gabungkan array berisi baris dengan .join("\n"), atau pakai \n di dalam string biasa.

Bagaimana cara mengecek apakah string memuat substring di TypeScript?

Panggil text.includes("part"), yang mengembalikan boolean. Method ini case-sensitive, jadi bandingkan string yang sudah diubah ke huruf kecil untuk pengecekan yang tidak membedakan huruf besar dan kecil: text.toLowerCase().includes(part.toLowerCase()). startsWith dan endsWith mengecek bagian awal dan akhir, dan indexOf mengembalikan posisinya atau -1.

Apakah ada perbedaan string di TypeScript dan JavaScript?

Tidak ada, saat runtime keduanya adalah string JavaScript yang sama dengan method yang sama. TypeScript menambahkan tipe string, mengecek bahwa method yang kamu panggil memang ada, dan mengetahui tipe kembaliannya, misalnya bahwa match bisa mengembalikan null dan at bisa mengembalikan undefined.

Bisakah mengubah satu karakter di string TypeScript?

Tidak. String bersifat immutable, dan s[0] = "H" adalah error kompilasi TS2542 (Index signature in type 'String' only permits reading). Buat string baru sebagai gantinya: "H" + s.slice(1).

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai