Jika, sebelum Anda tertarik pada JavaScript, Anda menulis dalam bahasa tradisional dengan ketikan yang kuat, maka Anda mungkin akrab dengan konsep
void
. Ini adalah tipe yang penggunaannya memberi tahu programmer bahwa fungsi dan metode yang sesuai tidak mengembalikan apa pun ketika dipanggil.

Entitas
void
juga tersedia dalam JavaScript dan TypeScript. Di JS, ini adalah operator. Dalam TS, ini adalah tipe data primitif. Dan di sana-sini,
void
tidak berperilaku seperti yang diharapkan oleh banyak orang yang menemukan
void
dalam bahasa lain.
Pernyataan JavaScript batal
Dalam JavaScript, operator
void
mengevaluasi ekspresi yang diberikan padanya. Pada saat yang sama, tidak peduli ekspresi mana yang dievaluasi,
void
selalu mengembalikan yang
undefined
.
let i = void 2;
Mengapa kita membutuhkan operator seperti itu?
Pertama, harus dicatat bahwa pada tahun-tahun awal pemrograman JS, pengembang dapat mendefinisikan kembali
undefined
dan menulis beberapa nilai untuk itu. Tetapi
void
selalu mengembalikan nilai sebenarnya dari
undefined
.
Kedua, menggunakan operator
void
adalah cara yang menarik untuk bekerja dengan fungsi yang langsung dipanggil:
void function() { console.log('What') }()
Dan semua ini - tanpa polusi namespace global:
void function aRecursion(i) { if(i > 0) { console.log(i--) aRecursion(i) } }(3) console.log(typeof aRecursion)
Karena operator
void
selalu mengembalikan
undefined
dan selalu mengevaluasi ekspresi yang dikirimkan kepadanya, kami memiliki cara yang sangat ekspresif untuk kembali dari fungsi tanpa mengembalikan beberapa nilai, tetapi dengan panggilan, misalnya, beberapa panggilan balik:
Ini mengarahkan kita ke cara paling penting untuk menggunakan
void
. Operator ini adalah semacam aplikasi "pos jaga". Jika fungsi tertentu harus selalu kembali
undefined
, ini dapat dicapai dengan menggunakan operator
void
.
button.onclick = () => void doSomething();
Membatalkan tipe data dalam TypeScript
Ketik
void di TypeScript bisa disebut sesuatu seperti kebalikan dari type
any
. Fungsi dalam JavaScript selalu mengembalikan sesuatu. Ini bisa berupa nilai yang ditetapkan oleh pemrogram atau
undefined
:
function iHaveNoReturnValue(i) { console.log(i) }
Karena fungsi JavaScript, yang darinya tidak ada yang dikembalikan secara eksplisit, selalu kembali
undefined
,
void
di TypeScript adalah tipe yang tepat untuk memberi tahu pengembang bahwa fungsi tersebut mengembalikan
undefined
:
declare function iHaveNoReturnValue(i: number): void
Entitas
void
dalam bentuk tipe juga dapat digunakan untuk parameter dan deklarasi variabel lainnya. Satu-satunya nilai yang selalu dapat diteruskan ke parameter void tidak
undefined
.
declare function iTakeNoParameters(x: void): void iTakeNoParameters() // iTakeNoParameters(undefined) // iTakeNoParameters(void 2) //
Akibatnya, ternyata di TS tipe yang
void
dan
undefined
adalah hal yang hampir sama. Tetapi ada satu perbedaan kecil di antara mereka, yang, pada kenyataannya, sangat penting. Jenis
void
dikembalikan dapat diganti dengan jenis lain, yang memungkinkan Anda menerapkan pola lanjut untuk bekerja dengan panggilan balik.
function doSomething(callback: () => void) { let c = callback()
Pengembang mengharapkan desain seperti itu, yang sering digunakan dalam aplikasi JS, untuk melakukan hal itu.
Berikut adalah materi tentang topik ini.
Jika Anda ingin fungsi hanya menerima fungsi yang mengembalikan
undefined
, Anda dapat mengubah metode tanda tangan sesuai:
Ringkasan
Operator
void
dalam JavaScript dan tipe data
void
dalam TypeScript adalah entitas yang cukup sederhana. Kisaran situasi di mana mereka berlaku terbatas. Namun, perlu dicatat bahwa programmer yang menggunakannya, kemungkinan besar, tidak akan menemui masalah ketika bekerja dengan mereka.
Pembaca yang budiman! Apakah Anda menggunakan
void
di JS dan TS?
