Rumah >hujung hadapan web >tutorial js >Menguasai Jenis Literal dalam TypeScript: true sebagai const vs true
Dalam TypeScript, terdapat perbezaan yang ketara antara kedua-dua pernyataan:
clientLoader.hydrate = benar sebagai const;
clientLoader.hydrate = benar;
FYI saya telah memilih contoh ini daripada penghala React v7.
Pernyataan sebagai const dalam TypeScript ialah cara memberitahu pengkompil TypeScript untuk menganggap nilai sebagai jenis literalnya, bukannya jenis umum.
Dalam kes ini, benar sebagai const bermakna jenis hidrat akan menjadi benar literal dan bukan boolean. Ia pada asasnya mengunci nilai hidrat kepada benar secara khusus.
Contoh:
interface ClientLoader { hydrate: true; // The type of hydrate is set to the literal value `true` } const clientLoader: ClientLoader = { hydrate: true as const, }; clientLoader.hydrate = true; // This is valid // clientLoader.hydrate = false; // Error: Type 'false' is not assignable to type 'true'
Dalam contoh di atas, clientLoader.hydrate secara khusus ditaip sebagai benar. Anda tidak boleh menetapkan sebarang nilai selain daripada benar kepada terhidrat kerana penegasan sebagai const.
Tugasan jenis ini berguna apabila anda ingin menguatkuasakan kebolehubahan untuk sifat tertentu.
Tanpa penegasan sebagai const, TypeScript akan membuat kesimpulan jenis hidrat sebagai boolean. Ini bermakna hidrat boleh diberikan sebarang nilai boolean (benar atau palsu).
Contoh:
interface ClientLoader { hydrate: boolean; // The type of hydrate is set to `boolean` } const clientLoader: ClientLoader = { hydrate: true, }; clientLoader.hydrate = true; // This is valid clientLoader.hydrate = false; // This is also valid
Dalam kes ini, memandangkan hidrat ditaip sebagai boolean, anda boleh menetapkan benar atau palsu kepadanya.
Ia memberikan fleksibiliti untuk bertukar antara kedua-dua benar dan salah.
Feature | clientLoader.hydrate = true as const; | clientLoader.hydrate = true; |
---|---|---|
Type of hydrate | true (literal type) | boolean (general type) |
Flexibility | Can only be true | Can be true or false |
Use Case | When you want the property to be strictly true and not allow changes | When the property can hold any boolean value |
Type Inference | The type of hydrate is narrowed to true | The type of hydrate is inferred as boolean |
Menguatkuasakan Ketidakbolehubahan: kerana const mengunci nilai supaya ia tidak boleh ditukar kepada sesuatu yang lain. Ini amat berguna apabila anda ingin memastikan bahawa nilai tertentu sentiasa sama sepanjang program.
Jenis Tersurat untuk Kesatuan Terdiskriminasi: Apabila bekerja dengan kesatuan sekerja yang didiskriminasi, kerana const membenarkan anda mencipta kes tertentu berdasarkan jenis tersurat, seperti yang ditunjukkan di bawah:
interface ClientLoader { hydrate: true; // The type of hydrate is set to the literal value `true` } const clientLoader: ClientLoader = { hydrate: true as const, }; clientLoader.hydrate = true; // This is valid // clientLoader.hydrate = false; // Error: Type 'false' is not assignable to type 'true'
Gunakan sebagai const apabila anda ingin menetapkan nilai literal tertentu pada harta dan menguatkuasakan bahawa nilai itu kekal.
Gunakan tugasan biasa (benar, palsu, dsb.) apabila anda mahu membenarkan harta menerima nilai boolean yang berbeza atau apabila nilai tepat tidak perlu dihadkan.
Ini menjadikan sebagai const alat yang berguna untuk menaip yang lebih tepat dan menguatkuasakan kekangan nilai yang lebih ketat dalam kod TypeScript anda.
Atas ialah kandungan terperinci Menguasai Jenis Literal dalam TypeScript: true sebagai const vs true. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!