#1 Set gibi düşünmek
#2 Bildirilmiş tür ile daraltılmış (narrowed) türü anlamak
#3 Opsiyonel alanlar yerine ayrımlı birleşim kullanmak
#4 Tür assertion'larından kaçınmak için type predicate kullanmak
#5 Union type dağılımını kontrol etmek
#6 Kapsamlı kontrollerle derleme sırasında ele alınmamış durumları denetlemek
#7 interface yerine type kullanmak
#8 Uygun durumlarda diziler yerine tuple kullanmak
#9 Çıkarılan türün genel ya da daha spesifik olmasını kontrol etmek
#10 Ek generic type parametreleri oluşturmak için infer kullanmak
#11 Tür manipülasyonunda yaratıcı davranarak DRY kalmak
Sonuç
6 yorum
Ben
typeyerineinterfacekullanmayı tercih ediyorum. Diğer dillerde de bulunan bir sözdizimi sonuçta.Ben de öyle düşünüyorum. Eskiden TypeScript Handbook'ta da mümkün olduğunda önce interface kullanılmasının tavsiye edildiğini hatırlıyorum.
İçerik bu.
Hepsi iyi de, 7. maddede
interfaceyerinetypekullanın demek gerçekten gerekli mi? Buna pek ipucu denemez.interfaceın ifade gücünün daha iyi olduğu durumlar da var; örneğininterface Foo {(b: number): A; (): B}Type’ı savunduğumdan değil ama ifade gücü daha iyi olan örneği tam anlayamadım. İlgili örnek cümle de
Typesile aynı şekilde ifade edilemez mi?interface Foo {(b: number): A; (): B}
type Foo = {(b: number): A; (): B}
Effective TypeScriptkitabında type ile interface arasında hangisinin kullanılacağına dair özetlenmiş bir bölüm var; alıntılayayım.Henüz bir stilin yerleşmediği bir projeyse, ileride genişletme gereksinimi olup olmayacağını düşünmek gerekir. Herhangi bir API için type bildirimi yazmanız gerekiyorsa interface kullanmak daha iyidir. Çünkü API değiştiğinde kullanıcılar interface üzerinden yeni alanları birleştirebilir ve bu faydalıdır. Ancak proje içinde kullanılan tiplerde declaration merging meydana gelmesi kötü bir tasarımdır. Bu yüzden böyle durumlarda type kullanılmalıdır.