#1 Berpikir dalam {Set}
#2 Memahami tipe yang dideklarasikan dan tipe yang dipersempit (narrowed)
#3 Gunakan union yang dibedakan alih-alih field opsional
#4 Gunakan predikat tipe untuk menghindari type assertion
#5 Mengontrol distribusi union type
#6 Periksa kasus yang tidak tertangani saat kompilasi melalui pemeriksaan menyeluruh
#7 Gunakan type daripada interface
#8 Dalam situasi yang tepat, gunakan tuple alih-alih array
#9 Mengontrol agar tipe yang diinferensikan bersifat umum atau spesifik
#10 Gunakan infer untuk membuat parameter tipe generik tambahan
#11 Tunjukkan kreativitas dalam manipulasi tipe untuk mempertahankan keadaan DRY
Penutup
6 komentar
Poin nomor 7 tampaknya ditulis dari sudut pandang React.
Saya pribadi lebih menyukai
InterfacedaripadaType. Itu juga merupakan sintaks yang ada di bahasa lain.Saya juga begitu. Saya ingat dulu bahkan di handbook TypeScript juga ada saran untuk sebisa mungkin memprioritaskan penggunaan interface.
Ini isinya.
Semua bagus, tapi soal poin 7 yang menyarankan memakai
typedaripadainterface, apakah perlu sampai begitu? Rasanya itu tidak bisa dibilang tip. Ada kasus di manainterfacepunya daya ekspresi yang lebih baik, misalnyainterface Foo {(b: number): A; (): B}Saya bukan sedang membela
type, tetapi saya kurang paham contoh yang katanya daya ekspresinya lebih baik. Bukankah contoh tersebut juga bisa diekspresikan dengan cara yang sama menggunakantype?Di buku Effective TypeScript ada bagian yang merangkum kapan sebaiknya menggunakan type dan interface, jadi saya kutipkan di sini.
Jika proyeknya belum memiliki gaya yang mapan, Anda perlu memikirkan apakah ada kemungkinan augmentasi di masa depan. Jika Anda harus menulis deklarasi tipe untuk suatu API, sebaiknya gunakan interface. Alasannya, ketika API berubah, pengguna bisa menggabungkan field baru melalui interface, sehingga hal ini berguna. Namun, terjadinya declaration merging pada tipe yang digunakan secara internal di dalam proyek adalah desain yang keliru. Karena itu, dalam kasus seperti ini sebaiknya gunakan type.