strictFunctionTypes
- TypeScript kursu
- Başlangıç
- Ders 69/89
- 4 dk
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çerliUygulama 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
// 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
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
type Log = (msg: ____) => void;
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ü |