javascript - Tujuan dari '@typescript-eslint/no-non-null-assertion' saat menonaktifkan tombol


Dalam blok kode ini, apa yang dilakukan .value! dan @typescript-eslint/no-non-null-assertion? Dokumentasinya terlalu abstrak bagi saya untuk mengaitkannya dengan konteks perilaku tombol ini.

const submitButton = ref<HTMLButtonElement | null>(null);

  //Disable button
  /* eslint-disable  @typescript-eslint/no-non-null-assertion */
  submitButton.value!.disabled = true;

P.S. Hanya dalam pemrograman Anda bisa mengatakan "no-non-null" dengan wajah serius.

Jawaban #1

! adalah assertion non-null dalam TypeScript. Ini memberitahu TypeScript "Saya tahu terlihat seperti value mungkin null, tapi percayalah, itu tidak". Ini bisa berguna jika Anda tahu sesuatu yang tidak diketahui TypeScript (dalam hal ini, Anda diasumsikan tahu bahwa ref akan terisi sebelum kode ini dijalankan), tetapi ini pada dasarnya mematikan pengecekan tipe pada baris ini, sehingga bisa secara tidak sengaja memperkenalkan bug.

Karena penegasan non-null berisiko, ada aturan lint yang dapat digunakan untuk melarang penggunaannya. Aturan lint ini, ketika diaktifkan, akan menandai baris ini sebagai masalah. Solusi umumnya adalah menulis kode untuk memeriksa null, sehingga tidak diperlukan penegasan. Tetapi jika Anda mau, Anda dapat memberitahu eslint untuk tidak memeriksa baris ini, melalui komentar khusus seperti /* eslint-disable @typescript-eslint/no-non-null-assertion */.

Jadi secara singkat, baris-baris ini mengatakan "Hei TypeScript, jangan periksa ini. Hei ESLint, jangan periksa ini".

Artikel terkait