Saya sedang mengerjakan file definisi untuk Google maps API for TypeScript.
Dan saya perlu mendefinisikan enum like type mis. google.maps.Animation
yang berisi dua properti: BOUNCE
dan DROP
.
Bagaimana ini harus dilakukan di TypeScript?
enums
typescript
eNepper
sumber
sumber
Jawaban:
TypeScript 0.9+ memiliki spesifikasi untuk enum:
Koma terakhir adalah opsional.
sumber
enum
konstruksi pada tahap ini karena tim TypeScript telah membuatnya cukup jelas itu akan berubah - jadi itu akan rusak.Mulai TypeScript 0.9 (saat ini rilis alfa), Anda dapat menggunakan definisi enum seperti ini:
Secara default, pencacahan ini akan ditetapkan masing-masing 0, 1 dan 2. Jika Anda ingin menyetel angka-angka ini secara eksplisit, Anda dapat melakukannya sebagai bagian dari deklarasi enum.
Daftar 6.2 Pencacahan dengan anggota eksplisit
Kedua contoh ini diangkat langsung dari TypeScript untuk Pemrogram JavaScript .
Perhatikan bahwa ini berbeda dengan spesifikasi 0.8. Spesifikasi 0.8 tampak seperti ini - tetapi itu ditandai sebagai eksperimental dan kemungkinan akan berubah, jadi Anda harus memperbarui kode lama apa pun:
Disclaimer - contoh 0.8 ini akan rusak di versi compiler TypeScript yang lebih baru.
sumber
Ini sekarang menjadi bagian dari bahasa. Lihat TypeScriptLang.org> Basic Type> enum untuk dokumentasi tentang ini. Kutipan dari dokumentasi tentang cara menggunakan enum ini:
Atau dengan nomor dukungan manual:
Anda juga dapat kembali ke nama enum dengan menggunakan misalnya
Color[2]
.Berikut adalah contoh bagaimana semua ini berjalan bersama:
Ini akan mencatat:
Karena, pada saat penulisan ini, Typecript Playground akan menghasilkan kode ini:
sumber
Hanya catatan lain bahwa Anda dapat enum id / string dengan yang berikut:
sumber
str
danid
menggunakannya?abstract class
lebih tepat untuk mencegah pembuatan instance karena TypeScript tidak memiliki gagasan tentangstatic class
?Pembaruan :
Seperti dicatat oleh @ iX3, Typecript 2.4 memiliki dukungan untuk string enum.
Lihat: Membuat enum dengan nilai string di Skrip Ketik
Jawaban asli:
Untuk nilai anggota String, TypeScript hanya mengizinkan angka sebagai nilai anggota enum. Tetapi ada beberapa solusi / peretasan yang dapat Anda terapkan;
Solusi 1:
disalin dari: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-typescript/
Ada solusi sederhana: Transmisikan string literal ke sembarang sebelum menetapkan:
solusi 2:
disalin dari: https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html
Anda dapat menggunakan string literal sebagai tipe. Sebagai contoh:
Di sini kami telah membuat variabel bernama foo yang hanya akan memungkinkan nilai literal 'Hello' untuk ditugaskan padanya. Ini ditunjukkan di bawah ini:
Mereka sendiri tidak terlalu berguna tetapi dapat digabungkan dalam sebuah tipe gabungan untuk membuat abstraksi yang kuat (dan berguna) misalnya:
sumber
Enum dalam naskah ketikan:
Enum dimasukkan ke dalam bahasa skrip untuk mendefinisikan satu set konstanta bernama. Menggunakan enum bisa membuat hidup kita lebih mudah. Alasannya adalah karena konstanta ini seringkali lebih mudah dibaca daripada nilai yang diwakili oleh enum.
Membuat enum:
Contoh dari dokumen ketikan ini menjelaskan dengan sangat baik bagaimana enum bekerja. Perhatikan bahwa nilai enum pertama kita (Up) diinisialisasi dengan 1. Semua anggota enum bilangan berikut kemudian secara otomatis bertambah dari nilai ini (yaitu Down = 2, Left = 3, Right = 4). Jika kita tidak menginisialisasi nilai pertama dengan 1 enum akan dimulai dari 0 dan kemudian kenaikan otomatis (yaitu Bawah = 1, Kiri = 2, Kanan = 3).
Menggunakan enum:
Kita dapat mengakses nilai enum dengan cara berikut:
Perhatikan bahwa cara ini kami jauh lebih deskriptif dalam cara kami menulis kode kami. Enum pada dasarnya mencegah kita untuk menggunakan bilangan ajaib (bilangan yang mewakili suatu entitas karena pemrogram telah memberikan arti kepadanya dalam konteks tertentu). Angka ajaib itu buruk karena alasan berikut:
sumber