CodeBlanks Logo Icon CodeBlanks

strictFunctionTypes

Katı fonksiyon türlerini öğrenirsin.

strictFunctionTypes nedir?

strictFunctionTypes, fonksiyon parametre türlerinin atanabilirliğini contravariant (ters yönlü) kurallarla denetler. Bu, callback ve handler atamalarında çalışma anı hatalarını derleme anında yakalar.

type Log = (msg: string) => void;
const log: Log = (msg) => console.log(msg);
log("merhaba");

Contravariance kuralı

Bir (a: Animal) => void fonksiyonunu (d: Dog) => void beklenen yere atayabilirsin; çünkü Animal alan fonksiyon Dog da alır. Tersi atama strictFunctionTypes açıkken hatadır; Dog bekleyen fonksiyon Animal almayabilir.

type Animal = { name: string };
type Dog = Animal & { age: number };
type AnimalFn = (a: Animal) => void;
type DogFn = (d: Dog) => void;
let af: AnimalFn = (a) => console.log(a.name);
let df: DogFn = af;  // geçerli

Uygulama Fonksiyon türleriyle güvenli atama

Animal türünü { name: string } ile tanımla. Dog türünü Animal & { age: number } ile tanımla. AnimalFn = (a: Animal) => void ve DogFn = (d: Dog) => void türlerini tanımla. af'i AnimalFn olarak tanımla (a.name yazdırsın), df: DogFn = af ata ve df'i { name: "Rex", age: 3 } ile çağır.

Başlangıç kodu

index.ts
// Animal türünü tanımla: name alanı string
// Dog türünü Animal'ı genişleterek tanımla (age: number ekle)
// AnimalFn ve DogFn fonksiyon türlerini tanımla
// af'i AnimalFn olarak tanımla, a.name yazdırsın
// df: DogFn = af ata ve df'i Dog ile çağır

Örnek çözüm

index.ts
type Animal = { name: string };
type Dog = Animal & { age: number };
type AnimalFn = (a: Animal) => void;
type DogFn = (d: Dog) => void;

const af: AnimalFn = (a) => console.log(a.name);
const df: DogFn = af;
df({ name: "Rex", age: 3 });

Beklenen çıktı

Rex

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 strictFunctionTypes hangi yön için katı denetim getirir?

  • Yalnızca dizi elemanları için
  • Fonksiyon parametre türleri için Doğru cevap
  • Yalnızca nesne özellikleri için
  • Yalnızca return türü için

Açıklama: strictFunctionTypes, fonksiyon parametre türlerinin contravariant olarak denetlenmesini sağlar. Return türleri zaten covariant'tır.

2 Fonksiyon türünü tamamla

Soru
type Log = (msg: ____) => void;
Cevap
type Log = (msg: string) => void;

Açıklama: Log fonksiyonu bir string mesaj alır. any tür güvenliğini bozar, number ve boolean yanlış türdür.

3 strictFunctionTypes parçaları

Kavram Anlamı
strictFunctionTypes Parametreleri contravariant denetler
(a: Animal) => void Animal alan fonksiyon türü
Dog = Animal & { age: number } Animal'ın alt türü
let df: DogFn = af Güvenli atama yönü

Başlangıç bölümündeki tüm dersler