Type assertion vs casting
- TypeScript kursu
- Orta seviye
- Ders 68/89
- 4 dk
Onaylama ile gerçek dönüşüm farkını öğrenirsin.
Onaylama ile dönüşüm farkı
Type assertion yalnızca derleme zamanı bilgisidir; çalışma zamanında değeri değiştirmez. Örneğin "5" as number ifadesi değeri 5 sayısına dönüştürmez; runtime'da hâlâ string "5" kalır. Gerçek dönüşüm için Number(), String() gibi fonksiyonlar kullanılır.
const s: any = "5";
console.log((s as number) + 1); // "51"
console.log(Number(s) + 1); // 6Gerçek dönüşüm fonksiyonları
Çalışma zamanında gerçek tür dönüşümü için Number(), String(), Boolean() fonksiyonları kullanılır. Bunlar değerin runtime tipini değiştirir. Assertion ise yalnızca TypeScript'in tür yorumuna etki eder.
const n = Number("42"); // 42 sayisi
const t = String(42); // "42" dizisiUygulama Assertion ve dönüşüm farkı
s değişkeni any türünde ve değeri "5". Önce as number ile onaylayıp iddia değişkenine ata; sonra Number() ile gerçek dönüşüm yapıp gercek değişkenine ata. Her birine 1 ekle ve console.log ile ayrı satırlarda yazdır.
Başlangıç kodu
// s degiskenini iddia yontemiyle number olarak isaretle
// Number fonksiyonuyla gercek donusum yap
// her degiskene 1 ekle ve ayri satirlarda yazdir
const s: any = "5";Örnek çözüm
const s: any = "5";
const iddia = s as number;
const gercek = Number(s);
console.log(iddia + 1);
console.log(gercek + 1);Beklenen çıktı
51 6
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir string değeri gerçekten sayıya dönüştürmek için hangisi kullanılır?
- <number> ile onaylama
- typeof operatörü
- as number ile onaylama
- Number() fonksiyonu Doğru cevap
Açıklama: as number ve <number> yalnızca derleme zamanı bilgisidir; gerçek dönüşüm için Number() çağrılmalıdır.
2 Gerçek sayısal dönüşüm
const s: any = "42";
// gercek donusum icin
const n = ____;
console.log(n + 1);
const s: any = "42";
// gercek donusum icin
const n = Number(s);
console.log(n + 1);
Açıklama: Çalışma zamanında gerçek dönüşüm için Number() fonksiyonu çağrılır; as sadece derleme zamanı bilgisidir.
3 Onaylama ve dönüşüm
| Kavram | Anlamı |
|---|---|
as number |
Yalnızca derleme zamanı |
Number(s) |
Çalışma zamanı dönüşümü |
String(n) |
Diziye dönüşüm |
Boolean(x) |
Mantıksal dönüşüm |