Rest Parametrelerini Tiplendirme
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 27 / 73.
TypeScript, tip güvenliğini korurken bu senaryoyu zarif bir şekilde ele almak için rest parametreleri sunar.
Rest parametreleri, yayılma operatörünü (...) ve ardından bir parametre adını ve tiplendirilmiş bir diziyi kullanır. Bu, kalan tüm argümanları tek bir dizi parametresinde toplar:
function sum(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
// Herhangi bir sayıda argümanla çağrılabilir
sum(1, 2); // 3
sum(1, 2, 3, 4, 5); // 15Rest parametresi her zaman fonksiyon imzasındaki son parametre olmalıdır. TypeScript, rest parametresine geçirilen tüm argümanların belirtilen dizi türüyle eşleşmesini sağlayarak, size statik tiplemenin güvenliğiyle birlikte değişken argümanların esnekliğini sunar.
Görev
KolayHerhangi bir sayıda sayısal argümanı kabul etmek için rest parametrelerini kullanan ve bunların toplamını bir number olarak döndüren sumAll adında bir fonksiyon oluşturun. Fonksiyonun açık bir dönüş türü ek açıklaması (return type annotation) olmalıdır.
Herhangi bir sayıda sayısal argümanı kabul etmek için rest parametrelerini kullanan ve aralarındaki en büyük değeri bir number olarak döndüren findMaximum adında başka bir fonksiyon oluşturun. Fonksiyonun açık bir dönüş türü ek açıklaması olmalıdır.
string türünde zorunlu bir separator parametresi alan ve ardından herhangi bir sayıda dize (string) argümanını kabul eden rest parametrelerine sahip concatenateStrings adında üçüncü bir fonksiyon oluşturun. Fonksiyon, tüm dize argümanlarını aralarına ayırıcıyı (separator) koyarak birleştirilmiş halde döndürmelidir. Fonksiyonun açık bir string dönüş türü ek açıklaması olmalıdır.
Fonksiyonlarınızı aşağıdaki değerlerle çağırarak ve sonuçları yazdırarak test edin:
sumAllfonksiyonunu5,10ve15ile çağırınsumAllfonksiyonunu1,2,3,4ve5ile çağırınfindMaximumfonksiyonunu8,3,12ve7ile çağırınfindMaximumfonksiyonunu25ve18ile çağırınconcatenateStringsfonksiyonunu ayırıcı olarak"-"ve"apple","banana","cherry"ile çağırınconcatenateStringsfonksiyonunu ayırıcı olarak" | "ve"red","green","blue","yellow"ile çağırın
Her bir sonucu yukarıda belirtilen sırayla ayrı bir satıra yazdırın.
Kendin dene
// TODO: Kodunuzu buraya yazın
// Rest parametreleri ile sumAll fonksiyonunu oluşturun
// Rest parametreleri ile findMaximum fonksiyonunu oluşturun
// Ayırıcı ve rest parametreleri ile concatenateStrings fonksiyonunu oluşturun
// Fonksiyonları test edin ve sonuçları yazdırın
console.log(sumAll(5, 10, 15));
console.log(sumAll(1, 2, 3, 4, 5));
console.log(findMaximum(8, 3, 12, 7));
console.log(findMaximum(25, 18));
console.log(concatenateStrings("-", "apple", "banana", "cherry"));
console.log(concatenateStrings(" | ", "red", "green", "blue", "yellow"));Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
TypeScript'e Giriş bölümündeki tüm dersler
1TS ile Başlarken
TypeScript Nedir?Neden TypeScript Kullanılır?İlk TypeScript KodunuzDerleme Süreci ve HatalarÖzet: TS'ye Giriş4Fonksiyonlarla Çalışmak
Parametre ve Dönüş Değerlerini TiplendirmeArrow Fonksiyonlarını Tiplendirme'void' Dönüş Tipi'?' ile Opsiyonel ParametrelerVarsayılan Parametre DeğerleriRest Parametrelerini TiplendirmeFonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar Oluşturma2Temel Tipler
Temel Tipler: str, num, boolean'any' Tipi: Kaçış Yolu'unknown' Tipi'null' ve 'undef' ile ÇalışmakTip Çıkarımı İş BaşındaAçık Tip BelirlemeleriÖzet: Temel Tipler Pratiği5Tipler: Takma Adlar, Unionlar ve Kesişimler
İlkel Tipler için Tip Takma AdlarıUnion Tipler ('|')Union Tipler ile ÇalışmakLiteral TiplerKesişim Tipleri ('&')Tip Takma Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Veri Yapısı: Diziler ve Tuple
Tipli DizilerDiziler için 'readonly' BelirleyicisiTuple Nedir?Tuple Tanımlama ve ErişmeTuple DestructuringReadonly Tuple'larÇok Boyutlu Tipli DizilerDizilerle Spread OperatörüÖzet: Diziler ve Tuple'lar6Nesneleri ve Interface'leri Tiplendirme
Satır İçi Nesne Tipi BelirtimleriNesneler için Type Alias KullanımıInterface'lere GirişInterface'ler ve Type Alias'ların KarşılaştırılmasıOpsiyonel ve Readonly ÖzelliklerInterface ve Tipleri GenişletmeInterface'lere Metot EklemeÖzet: Nesne Yapılarını Tanımlama