Pemeriksaan jenis nilai nol
<p>Saya baru sahaja menulis kaedah dalam perkhidmatan, tetapi saya menghadapi masalah di mana jenis membayangkan bahawa saya mungkin mengembalikan nilai nol, walaupun saya telah melakukan semakan nol dalam blok pernyataan if. </p>
<pre class="brush:php;toolbar:false;">public async getUserById(id: string): Janji<UserEntity>
const user = this.userRepository.getById(id); // mengembalikan <UserEntity |.
jika (!pengguna) { // menyemak nol
buang NotFoundUser baru(`Tidak ditemui pengguna`);
}
// Taip 'UserEntity |. tidak boleh ditugaskan untuk menaip 'UserEntity'.
// Taip 'null' tidak boleh diberikan untuk menaip 'UserEntity'.
kembali pengguna;
}</pre>
<p>Saya ingin membuang pengecualian jika pembolehubah pengguna kosong dan mengembalikan UserEntity jika tidak. <br /><br />Jika saya meletakkan dua tanda seru di sana, masalahnya telah selesai. </p><p><br /></p>
<pre class="brush:php;toolbar:false;">if (!!pengguna) { // menyemak nol
buang NotFoundUser baru(`Tidak ditemui pengguna`);
}</pre>
<p>Tetapi jika saya menaip !!null dalam konsol, ia akan kembali palsu, jadi dalam kes ini saya tidak pernah mengalami situasi di mana pengecualian dilemparkan. Mengapakah tingkah laku ini berlaku? </p>