26 poin oleh xguru 2023-01-04 | 6 komentar | Bagikan ke WhatsApp

#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

 
tested 2023-01-04

Poin nomor 7 tampaknya ditulis dari sudut pandang React.
Saya pribadi lebih menyukai Interface daripada Type. Itu juga merupakan sintaks yang ada di bahasa lain.

 
alstjr7375 2023-01-04

Saya juga begitu. Saya ingat dulu bahkan di handbook TypeScript juga ada saran untuk sebisa mungkin memprioritaskan penggunaan interface.

 
bichi 2023-01-04

Semua bagus, tapi soal poin 7 yang menyarankan memakai type daripada interface, apakah perlu sampai begitu? Rasanya itu tidak bisa dibilang tip. Ada kasus di mana interface punya daya ekspresi yang lebih baik, misalnya interface Foo {(b: number): A; (): B}

 
a741593 2023-01-04

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 menggunakan type?

interface Foo {(b: number): A; (): B}
type Foo =     {(b: number): A; (): B}
 
harimkims 2023-01-05

Di buku Effective TypeScript ada bagian yang merangkum kapan sebaiknya menggunakan type dan interface, jadi saya kutipkan di sini.

Mari kita ambil kesimpulan tentang kapan harus menggunakan type dan interface. Jika tipenya kompleks, gunakan saja type alias tanpa perlu banyak pertimbangan. Namun, jika itu adalah tipe objek sederhana yang bisa diekspresikan dengan dua cara, baik type maupun interface, maka perlu dipertimbangkan dari sudut pandang konsistensi dan augmentasi. Jika Anda bekerja pada codebase yang secara konsisten menggunakan interface, gunakan interface; jika secara konsisten menggunakan type, gunakan type.

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.