Menu

TypeScript String: İnterpolasyon, Çok Satırlı Metin ve Contains

TypeScript'te string'lerle çalışmak: template literal ile interpolasyon, çok satırlı string'ler, bir string'in bir alt string içerip içermediğini kontrol etmek, yaygın metotlar ve döndürdükleri tipler, string literal tipleri.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Bir TypeScript string'i, string tipine sahip bir JavaScript string'idir. İnterpolasyon için bir template literal yazın: ${expression} yer tutucuları içeren backtick'ler. Tek ve çift tırnaklar interpolasyonsuz düz string'ler oluşturur.

Üç tırnak stili de aynı tipi, string tipini üretir. $${...} içindeki ilk $ düz bir dolar işaretidir; yer tutucuyu yalnızca ${ başlatır.

String İnterpolasyonu

${ } içine bir değişken, aritmetik, bir fonksiyon çağrısı, bir ternary ya da iç içe bir template literal koyabilirsiniz. Değer, String(value) nasıl dönüştürüyorsa aynı şekilde string'e dönüştürülür (istisna symbol: onu interpolasyona sokmak TS2731 derleme hatasıdır ve çalışma zamanında bir TypeError fırlatırdı; String(sym) yazın).

Bir nesneyi interpolasyona sokmak [object Object] yazdırır; bu neredeyse hiçbir zaman istediğiniz şey değildir. Alanları seçin ya da JSON.stringify(obj) kullanın.

Çok Satırlı String'ler

Bir template literal birden fazla satıra yayılabilir. Satır sonları korunur, her satırın başındaki girinti de korunur, çünkü backtick'lerin arasındaki her şey string'in parçasıdır.

Kodunuzun girintisi string'e sızacaksa onu bir dizi ve join("\n") ile oluşturun ya da template literal'in satırlarını satır başına dayalı tutun.

Bir String'in Alt String İçerip İçermediğini Kontrol Etmek

includes, "içeriyor mu" sorusunu bir boolean ile yanıtlar. startsWith ve endsWith baş ve sonu kontrol eder. indexOf konumu, alt string yoksa -1 verir. Hepsi büyük/küçük harfe duyarlıdır.

includes bir başlangıç konumu da kabul eder: file.includes("R", 1) yalnızca 1. indeksten itibaren arar.

Yaygın Metotlar ve Tipleri

TypeScript her yerleşik metodun dönüş tipini bilir. Dikkat edilmesi gerekenler boş dönebilenlerdir, çünkü strict altında sonucu kullanmadan önce null veya undefined durumunu ele almanız gerekir.

MetotDöndürdüğüÖrnek
includes, startsWith, endsWithboolean"abc".includes("b") sonucu true
indexOf, lastIndexOfnumber (yoksa -1)"abc".indexOf("c") sonucu 2
slice, substringstring"hello".slice(1, 3) sonucu "el"
splitstring[]"a,b".split(",") sonucu ["a", "b"]
trim, trimStart, trimEndstring" x ".trim() sonucu "x"
toUpperCase, toLowerCasestring"Ts".toUpperCase() sonucu "TS"
padStart, padEndstring"7".padStart(3, "0") sonucu "007"
replace, replaceAllstring"a-b-c".replaceAll("-", "") sonucu "abc"
repeatstring"ab".repeat(2) sonucu "abab"
atstring | undefined"abc".at(-1) sonucu "c"
matchRegExpMatchArray | null"a1".match(/\d/)
length (özellik)number"abc".length sonucu 3

Düz indeksleme, s[5], indeks sonun ötesinde olsa bile (çalışma zamanında değerin undefined olduğu yerde) string tipindedir. noUncheckedIndexedAccess derleyici seçeneği bunun yerine onu string | undefined yapar.

String'ler Değiştirilemez

Bir karakteri yerinde değiştiremezsiniz. TypeScript bir indekse atamayı TS2542 hatası olarak bildirir, Index signature in type 'String' only permits reading.; derlendiği strict mod JavaScript'te de aynı atama çalışma zamanında bir TypeError fırlatırdı. Bir string'i değiştiriyor gibi görünen her metot yeni bir string döndürür.

Diğer değerleri string'e ya da string'leri sayıya dönüştürmek için string to number sayfasına bakın.

String Literal Tipleri

string her metni kabul eder. Bir string literal tipi ise tek bir tam değeri kabul eder ve bunların bir union'ı, izin verilen string'lerden enum benzeri bir küme oluşturur:

Literal tipler yalnızca derleme zamanında kontrol edilir; çalışma zamanında label("deleted") yine de çalışır ve Post is deleted yazdırır, buradaki ikinci satırın yaptığı da budur. Template literal sözdizimi tip düzeyinde de çalışır; örneğin type EventName = `on${string}` ifadesi on ile başlayan her string'i kabul eder.

Sıkça Sorulan Sorular

TypeScript'te string interpolasyonu nasıl yapılır?

Bir template literal kullanın: ${expression} yer tutucuları içeren backtick'ler, örneğin `Hello, ${name}!`. Süslü parantezlerin içinde her ifade çalışır ve sonucun tipi string olur. Tek ve çift tırnaklar interpolasyon yapmaz.

TypeScript'te çok satırlı bir string nasıl yazılır?

Metni backtick'lerin içine koyun ve satırları kaynak kodda bölün: bir template literal hem satır sonlarını hem de her satırın baştaki girintisini korur. Alternatif olarak bir satır dizisini .join("\n") ile birleştirin ya da sıradan bir string içinde \n kullanın.

TypeScript'te bir string'in bir alt string içerip içermediğini nasıl kontrol ederim?

text.includes("part") çağırın, bir boolean döndürür. Büyük/küçük harfe duyarlıdır; harf duyarsız kontrol için küçük harfe çevrilmiş string'leri karşılaştırın: text.toLowerCase().includes(part.toLowerCase()). startsWith ve endsWith baş ve sonu kontrol eder, indexOf ise konumu ya da -1 döndürür.

TypeScript ve JavaScript'teki string'ler arasında fark var mı?

Hayır, çalışma zamanında aynı metotlara sahip aynı JavaScript string'leridir. TypeScript string tipini ekler, var olan metotları çağırdığınızı kontrol eder ve dönüş tiplerini bilir; örneğin match metodunun null, at metodunun undefined döndürebileceğini.

Bir TypeScript string'indeki bir karakteri değiştirebilir misiniz?

Hayır. String'ler değiştirilemez (immutable) ve s[0] = "H" TS2542 derleme hatasıdır (Index signature in type 'String' only permits reading). Bunun yerine yeni bir string oluşturun: "H" + s.slice(1).

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA