Operator Pernyataan Non-null
Gunakan operator ! untuk menyatakan bahwa suatu nilai bukan null atau undefined.
Operator Pernyataan Non-null adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.
Operator Pernyataan Bukan Nilai Kosong
Operator postfix ! memberi tahu TypeScript, “nilai ini bukan null atau undefined di sini”. Operator ini menghapus nilai tersebut dari tipe tanpa pemeriksaan saat berjalan.
function firstChar(s: string | null): string {
return s!.charAt(0); // assert s is not null
}
console.log(firstChar('hello'));Tempat Menaruh !
! diletakkan tepat setelah ekspresi yang Anda nyatakan, sebelum akses lanjutan apa pun. Operator ini menghapus null | undefined dari tipe ekspresi tersebut.
type Box = { value?: number };
const box: Box = { value: 7 };
const n: number = box.value!; // value is number | undefined -> number
console.log(n);Menyatakan Nilai Tidak Kosong Setelah Penjaga
Terkadang Anda telah memastikan secara logis bahwa suatu nilai tersedia, tetapi kompiler tidak dapat mengikuti alasan tersebut. ! memungkinkan Anda melanjutkan. Meskipun begitu, pemeriksaan saat berjalan yang sebenarnya biasanya lebih jelas.
const list: Array<string | null> = ['a', null, 'c'];
const present = list.filter((x) => x !== null);
// TS may still see string | null; assert if certain:
console.log(present[0]!.toUpperCase());Hanya Saat Kompilasi, Sekali Lagi
Seperti as, operator ! dihapus saat berjalan. Operator ini tidak melakukan pemeriksaan apa pun. Jika nilainya benar-benar kosong, Anda akan mendapatkan kesalahan saat berjalan meskipun kompiler sudah menganggapnya benar.
function risky(s: string | null): number {
return s!.length; // no runtime guard
}
console.log(risky('hi'));
// risky(null) would throw at runtimeBahaya Penggunaan !
Jika Anda menyatakan nilai tidak kosong pada nilai yang sebenarnya dapat kosong, Anda telah membuat kesalahan tersembunyi. Kompiler berhenti memperingatkan Anda, sehingga kesalahan baru muncul ketika nilai kosong tersebut benar-benar muncul dalam produksi.
type User = { name?: string };
const u: User = {};
// const len = u.name!.length; // compiles, crashes at runtime
console.log('name is undefined here -> ! would crash');Utamakan Pemeriksaan yang Sebenarnya
Jika memungkinkan, ganti ! dengan pemeriksaan nilai kosong yang sebenarnya atau perangkaian opsional. Versi yang aman hanya membutuhkan satu baris dan menghilangkan seluruh jenis kerusakan saat berjalan.
type User = { name?: string };
function nameLen(u: User): number {
if (u.name) return u.name.length; // checked
return 0;
}
console.log(nameLen({ name: 'Ada' }), nameLen({}));Pernyataan Penugasan Pasti
Fitur terkait adalah pernyataan penugasan pasti: let x!: T. Fitur ini menjanjikan kepada kompiler bahwa x akan diberi nilai sebelum digunakan, meskipun belum diinisialisasi saat deklarasi.
let token!: string; // promise: assigned before use
function init() { token = 'abc123'; }
init();
console.log(token.length);Penugasan Pasti dalam Kelas
Hal ini umum dalam kelas ketika sebuah properti diatur oleh kerangka kerja atau metode inisialisasi, bukan oleh konstruktor. ! setelah nama properti membungkam kesalahan “belum pasti diberi nilai”.
class Service {
config!: { url: string }; // set later by setup()
setup() { this.config = { url: '/api' }; }
}
const s = new Service();
s.setup();
console.log(s.config.url);Gunakan Penugasan Pasti dengan Hati-Hati
Pernyataan penugasan pasti adalah janji lain yang tidak dapat diverifikasi oleh kompiler. Jika Anda mengakses properti sebelum memberinya nilai, Anda akan membaca undefined saat berjalan tanpa peringatan.
class Late {
data!: number[];
read() { return this.data.length; } // crashes if called before init
}
const l = new Late();
l.data = [1, 2];
console.log(l.read());! dan Perangkaian Opsional
Jangan memilih ! jika ?. sudah cukup. Perangkaian opsional menangani nilai kosong dengan aman saat berjalan, sedangkan ! hanya membungkam kompiler. Keduanya menyelesaikan masalah yang berbeda.
type Cfg = { db?: { host?: string } };
const c: Cfg = {};
console.log(c.db?.host ?? 'localhost'); // safe
// c.db!.host! would crash hereKapan ! Dapat Dibenarkan
Operator ! wajar digunakan ketika Anda memiliki jaminan nyata yang tidak dapat dinyatakan oleh kompiler—misalnya, nilai yang baru saja Anda masukkan dan langsung baca. Bahkan dalam kasus itu, dokumentasikan alasan penggunaannya aman.
const cache = new Map<string, number>();
cache.set('hits', 0);
// We just set it, so get is non-null:
const hits = cache.get('hits')!;
console.log(hits);Pemeriksaan Singkat
Ujilah pemahaman Anda tentang operator pernyataan bukan nilai kosong.
Rangkuman: Pernyataan Bukan Nilai Kosong
Anda telah mempelajari bahwa:
- Operator pascafiks
!hanya menghapusnull | undefineddari suatu tipe pada waktu kompilasi. - Operator ini tidak melakukan pemeriksaan saat berjalan, sehingga penegasan yang keliru tetap menyebabkan program gagal.
let x!: Tadalah penegasan penetapan definitif untuk nilai yang diinisialisasi kemudian.- Utamakan pemeriksaan nyata atau perangkaian opsional; gunakan
!hanya untuk jaminan yang benar-benar pasti.
Selanjutnya, penegasan ganda dan risikonya.
const map = new Map<string, number>();
map.set('a', 1);
const v = map.get('a')!;
console.log(v);Pertanyaan yang Sering Diajukan
Apakah pelajaran “Operator Pernyataan Non-null” gratis?
Ya — teks lengkap “Operator Pernyataan Non-null” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Operator Pernyataan Non-null”?
Gunakan operator ! untuk menyatakan bahwa suatu nilai bukan null atau undefined. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Operator Pernyataan Non-null” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Kata Kunci as untuk Pernyataan Jenis
- Operator Pernyataan Non-null
- Pernyataan Ganda dan Risikonya
- Pernyataan versus Pengawal Jenis