yoklateknik mülakat

Frontend Typescript Advanced Types Mülakat Soruları

75 doğrulanmış Frontend Typescript Advanced Types 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 Advanced TypesZorluk 1
TypeScript, var olan bir tipi yeni bir tipe dönüştüren birkaç yerleşik utility type ile gelir. Aşağıdakilerden hangisi yerleşik bir utility type'tır?
  • aOptional<T>
  • bPartial<T>
  • cNullable<T>
  • dMutable<T>
Açıklama:Partial<T>, TypeScript'in yerleşik utility type'larından biridir — T'nin her property'sinin opsiyonel olduğu yeni bir tip üretir. Optional, Nullable ve Mutable standart kütüphanenin parçası değildir (takımlar bazen benzer isimli kendi yardımcılarını tanımlar, ama bunlar yerleşik değildir).
Typescript Advanced TypesZorluk 1
interface User {
  id: number;
  name: string;
  email: string;
}
type UserUpdate = Partial<User>;
const update: UserUpdate = { name: 'Ada' };

Bu derlenir mi?
  • aEvet — Partial<User>, User'ın her property'sini opsiyonel yapar, bu yüzden bir alt küme nesne geçerlidir
  • bHayır — update'te User'ın gerektirdiği id ve email eksik
  • cHayır — Partial yalnızca sınıflara uygulanabilir, interface'lere değil
  • dEvet, ama sadece name'in User'da tanımlanan ilk property olması sayesinde
Açıklama:Partial<T>, T'nin her property'si üzerinde gezinir ve onu opsiyonel (?) işaretler. UserUpdate = Partial<User> olduğundan id, name ve email'in hepsi opsiyonel olur, bu yüzden yalnızca name sağlayan bir nesne bu tipi karşılar. Property tanımlanma sırası önemli değildir (d).
Typescript Advanced TypesZorluk 2
interface Product {
  id: number;
  name: string;
  price: number;
}
type ProductPreview = Pick<Product, 'id' | 'name'>;

ProductPreview'ın hangi property'leri var?
  • aProduct'ın tüm property'leri, price opsiyonel yapılmış olarak
  • bYalnızca price, çünkü Pick listelenmeyen HER ŞEYİ seçer
  • cYalnızca id ve name, ikinci tip argümanında listelendiği gibi
  • did, name ve price, çünkü Pick orijinal şekli değişmeden korur
Açıklama:Pick<T, K>, yalnızca K union'ında adı geçen property'leri içeren yeni bir tip inşa eder. Burada K, 'id' | 'name' olduğundan ProductPreview tam olarak bu iki property'ye sahiptir — price tamamen dışlanır, opsiyonel yapılmaz.
Typescript Advanced TypesZorluk 2
interface Product {
  id: number;
  name: string;
  price: number;
  internalCode: string;
}
type PublicProduct = Omit<Product, 'internalCode'>;

PublicProduct'ın hangi property'leri var?
  • aYalnızca internalCode
  • bProduct'ın tüm property'leri değişmeden, internalCode dahil
  • cHiçbiri — tek bir string ile Omit tüm property'leri kaldırır
  • did, name ve priceinternalCode hariç Product'ın tüm property'leri
Açıklama:Omit<T, K>, Pick'in tersidir: T'nin K'de adı geçenler DIŞINDAKİ tüm property'lerini tutar. Burada K sadece 'internalCode' olduğundan PublicProduct, id, name ve price'ı korur, internalCode'u atar.
Typescript Advanced TypesZorluk 2
type Scores = Record<'math' | 'science' | 'art', number>;
const s: Scores = { math: 90, science: 85, art: 70 };

Record<'math' | 'science' | 'art', number> neyi ifade eder?
  • aTam olarak 3 elemanlı bir sayı dizisi
  • bAnahtarları tam olarak 'math', 'science', 'art' olan, her biri bir number'a eşlenen bir nesne tipi
  • c'ya bir string literal ya da bir number' anlamına gelen bir union type
  • dDeğer number olduğu sürece herhangi bir string anahtara izin veren bir nesne tipi
Açıklama:Record<K, V>, anahtarları tam olarak K union'ının üyeleri olan, her biri V değer tipine sahip bir nesne tipi inşa eder. Yani Record<'math' | 'science' | 'art', number>, tam olarak bu üç anahtara sahip, her biri bir number tutan bir nesne gerektirir — birini atlamak ya da listelenmemiş bir anahtar eklemek tip hatasıdır.
Typescript Advanced TypesZorluk 2
function createUser(name: string, age: number) {
  return { name, age, createdAt: new Date() };
}
type NewUser = ReturnType<typeof createUser>;

ReturnType<typeof createUser> neyi üretir?
  • atypeof createUser, yani 'function' string literal'i
  • bvoid, çünkü ReturnType yalnızca dönüş değeri olmayan fonksiyonlarda çalışır
  • ccreateUser'ın döndürdüğü şeyin tipi: { name: string; age: number; createdAt: Date }
  • dcreateUser'ın kendi imzasıyla özdeş bir fonksiyon tipi
Açıklama:typeof createUser, fonksiyonun TİPİNİ (çağrı imzasını) alır, ve ReturnType<F>, bir F fonksiyon tipinin döndürdüğü şeyin tipini çıkarır. Yani NewUser, çıkarılan dönüş nesnesi şekli { name: string; age: number; createdAt: Date } olur — fonksiyon imzasının kendisini korumaz (d), ve bir string literal de değildir (a).

2925 soruluk Frontend bankasında kendini sına.

Mülakata başla