yoklateknik mülakat

Frontend Typescript Type Fundamentals Mülakat Soruları

75 doğrulanmış Frontend Typescript Type Fundamentals mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Typescript Type FundamentalsZorluk 1
TypeScript'te, bir nesnenin şeklini tanımlarken interface ile type alias arasındaki temel benzerlik nedir?
  • aYalnızca interface bir nesnenin şeklini tanımlayabilir; type sadece primitive'ler içindir
  • bİkisi de isimlendirilmiş property'ler ve tiplerle bir nesnenin şeklini tanımlayabilir
  • cYalnızca type bir nesnenin şeklini tanımlayabilir; interface sadece sınıflar içindir
  • dİkisi de nesne şekli tanımlayamaz; ikisi de sadece fonksiyon imzalarıyla sınırlıdır
Açıklama:Hem interface hem type alias bir nesnenin şeklini (isimlendirilmiş property'ler ve tipleri) tanımlayabilir — bu, çakışan temel kullanım alanlarıdır. Diğer yeteneklerde (declaration merging, union'lar vb.) farklılaşırlar, ama nesne şekli tanımlamak ikisinin de yaptığı bir şeydir.
Typescript Type FundamentalsZorluk 2
let id: string | number;
id = "abc";
id = 42;
id = true;

Hangi satır TypeScript derleme hatası verir?
  • aid = "abc"; — burada string kullanmak yasak
  • bid = 42; — burada number kullanmak yasak
  • cid = true;
  • dHiçbir satır hata vermez
Açıklama:id'nin tipi string | number union'ıdır — sadece string veya number tipindeki değerler atanabilir. "abc" ve 42 ikisi de uyar, ama true bir boolean'dır ve union'ın izin verdiği tiplerden biri değildir, bu yüzden tip hatasıdır.
Typescript Type FundamentalsZorluk 1
type Direction = "up" | "down" | "left" | "right";
let move: Direction = "up";
move = "diagonal";

Son satırda ne olur?
  • aSorunsuz derlenir, Direction herhangi bir string'i kabul eder
  • bSorunsuz derlenir, ama move çalışma zamanında undefined olur
  • cKod çalışırken bir TypeError fırlatır
  • dTypeScript derleme hatası — "diagonal" geçerli bir Direction literal'i değil
Açıklama:Direction, belirli string literal tiplerinin union'ıdır. Sadece tam olarak "up", "down", "left" veya "right" o tipteki bir değişkene atanabilir. "diagonal" geçerli bir string'dir ama bu literal'lerden biri değildir, bu yüzden derleyici atamayı reddeder — bu bir derleme-zamanı hatasıdır, çalışma-zamanı değil, çünkü TypeScript'in tipleri derlemeden sonra var olmaz.
Typescript Type FundamentalsZorluk 2
interface Point {
  readonly x: number;
  readonly y: number;
}
const p: Point = { x: 1, y: 2 };
p.x = 5;

Son satırda ne olur?
  • aTypeScript derleme hatası — x readonly
  • bSorunsuz derlenir ve çalışır, p.x 5 olur
  • cp, const ile tanımlandığı için çalışma zamanında TypeError fırlatır
  • dSorunsuz derlenir ama p.x sessizce 1 kalır
Açıklama:Bir interface property'sinde readonly, sadece nesne oluşturulurken (sınıflarda constructor'da) bir kez atanabileceği anlamına gelir — sonraki her atama derleme-zamanı hatasıdır. Bu, değişkendeki const'tan bağımsızdır (o sadece p'nin kendisinin yeniden atanmasını engeller, property'lerini değil).
Typescript Type FundamentalsZorluk 1
interface User {
  name: string;
  nickname?: string;
}

nickname'den sonraki ? ne anlama gelir?
  • anickname her zaman null olmalı
  • bnickname sadece string değil, herhangi bir tip olabilir
  • cnickname opsiyoneldir, atlanabilir
  • dnickname, name'den otomatik olarak hesaplanır
Açıklama:? bir property'yi opsiyonel olarak işaretler: User tipindeki bir değer, nickname içersin ya da içermesin geçerlidir. Varsa, yine de bir string olmalıdır; TypeScript erişildiğinde tipini etkin olarak string | undefined gibi ele alır.
Typescript Type FundamentalsZorluk 2
interface Named { name: string; }

function greet(x: Named) {
  return `Hi, ${x.name}`;
}

class Dog {
  name: string = "Rex";
  breed: string = "Lab";
}

greet(new Dog());

greet(new Dog()) derlenir mi, neden?
  • aHayır, çünkü Dog açıkça implements Named demiyor
  • bEvet, TypeScript yapısal tipleme kullanır — şekil uyumu yeterli
  • cHayır, çünkü Dog'un Named'da tanımlanmayan fazladan bir property'si (breed) var
  • dEvet, ama sadece Dog ve Named aynı dosyada olduğu için
Açıklama:TypeScript'in tip sistemi yapısaldır (duck typing), nominal değildir: açık implements/extends bildirimlerinden veya isimlendirmeden bağımsız olarak, şekli uyuyorsa bir tip uyumludur. Dog'un bir name: string'i var, Named'ın istediği tam olarak bu — fazladan breed property'si onu diskalifiye etmez, çünkü bir değişken geçirirken (nesne literal'i geçirirken olduğu gibi fazla-property kontrolü daha katı değildir) daha fazlasına sahip olmak sorun değildir.

2925 soruluk Frontend bankasında kendini sına.

Mülakata başla