Apakah ada cara untuk membiarkan fungsi javascript tahu bahwa parameter tertentu adalah tipe tertentu?
Mampu melakukan sesuatu seperti ini akan menjadi sempurna:
function myFunction(Date myDate, String myString)
{
//do stuff
}
Terima kasih!
Pembaruan : Karena jawabannya adalah "tidak," jika saya ingin myDate
diperlakukan sebagai tanggal (untuk memanggil fungsi tanggal di dalamnya), saya harus memasukkannya sebagai tanggal di dalam fungsi atau menetapkan variabel baru dari ketik Date to it?
javascript
function
dmr
sumber
sumber
Date
, hanyaobject
.Date
adalah suatu fungsi. Lihatlah stackoverflow.com/questions/1646698/… untuk mengetahui lebih lanjut tentangnew
kata kunci JavaScript . Juga, karena tidak ada kelas, tidak ada casting. Anda cukup memanggil fungsi yang Anda inginkan. Jika objek berisi mereka, mereka akan berjalan, jika tidak Anda akan mendapatkan kesalahan.Jawaban:
Tidak, JavaScript bukan bahasa yang diketik secara statis. Terkadang Anda mungkin perlu memeriksa jenis parameter secara manual di badan fungsi Anda.
sumber
instanceof
dantypeof
kata kunci untuk membantu dalam hal ini. Meskipun ini membutuhkan lebih banyak kode, mungkin itu pada pengembang untuk memilih JavaScript sebagai bahasa untuk sesuatu yang sangat tergantung pada jenis. Adapun aplikasi backend nodejs besar? Saya pikir itu harus masuk akal.Tidak dalam javascript sendiri tetapi menggunakan mode lanjutan Google Closure Compiler Anda dapat melakukannya:
Lihat http://code.google.com/closure/compiler/docs/js-for-compiler.html
sumber
foo( /*MyType*/ param )
cara seperti yang dijelaskan di sini juga berfungsi: stackoverflow.com/a/31420719/1915920Meskipun Anda tidak dapat memberi tahu JavaScript tentang jenis bahasa , Anda dapat memberi tahu IDE tentang JavaScript , sehingga Anda mendapatkan pelengkapan otomatis yang jauh lebih bermanfaat.
Berikut adalah dua cara untuk melakukan itu:
Gunakan JSDoc , sistem untuk mendokumentasikan kode JavaScript dalam komentar. Secara khusus, Anda perlu
@param
arahan :Anda juga dapat menggunakan JSDoc untuk mendefinisikan tipe kustom dan menentukan yang ada dalam
@param
arahan, tetapi perhatikan bahwa JSDoc tidak akan melakukan pengecekan tipe apa pun; itu hanya alat dokumentasi. Untuk memeriksa jenis yang didefinisikan dalam JSDoc, lihatlah ke TypeScript , yang dapat mengurai tag JSDoc .Gunakan tipe hinting dengan menentukan tipe tepat sebelum parameter di
/* comment */
:Ini adalah teknik yang cukup luas, digunakan oleh ReactJS misalnya. Sangat berguna untuk parameter callback yang diteruskan ke perpustakaan pihak ke-3.
TypeScript
Untuk pengecekan tipe aktual, solusi terdekat adalah menggunakan TypeScript, sebuah superset JavaScript ( kebanyakan ). Inilah TypeScript dalam 5 menit .
sumber
VSCode
?vi
adalah editor yang terlalu banyak disalahgunakan, bukan IDE. Anda dapat melakukan banyak halvi
, sama seperti Anda dapat membuat video musik di Excel . Ide bagus? Mungkin tidak. Gunakan alat yang tepat untuk pekerjaan itu.Lihat Aliran baru pustaka dari Facebook, "pemeriksa tipe statis, yang dirancang untuk menemukan kesalahan jenis dalam program JavaScript"
Definisi:
Pengecekan tipe:
Dan inilah cara menjalankannya .
sumber
Tidak, sebagai gantinya Anda perlu melakukan sesuatu seperti ini tergantung pada kebutuhan Anda:
sumber
Anda dapat menerapkan sistem yang menangani pemeriksaan tipe secara otomatis , menggunakan pembungkus pada fungsi Anda.
Implementasi berikut menggambarkan ide utama, dengan cara yang sederhana, tetapi operatif :
sumber
Sunting: Tujuh tahun kemudian, jawaban ini kadang-kadang mendapat perbaikan. Tidak apa-apa jika Anda mencari pengecekan runtime, tetapi sekarang saya akan merekomendasikan pengecekan tipe kompilasi-waktu menggunakan Typefot, atau mungkin Flow. Lihat https://stackoverflow.com/a/31420719/610585 atas untuk informasi lebih lanjut.
Jawaban asli:
Itu tidak dibangun ke dalam bahasa, tetapi Anda dapat melakukannya sendiri dengan mudah. Jawaban Vibhu adalah apa yang saya anggap cara tipikal mengetik pengecekan dalam Javascript. Jika Anda ingin sesuatu yang lebih umum, coba sesuatu seperti ini: (hanya sebuah contoh untuk membantu Anda memulai)
sumber
Ini dapat dengan mudah dilakukan dengan ArgueJS :
sumber
Gunakan
typeof
atauinstanceof
:sumber
Mungkin fungsi pembantu seperti ini. Tetapi jika Anda melihat diri Anda menggunakan sintaksis seperti itu secara teratur, Anda mungkin harus beralih ke Agenda.
sumber
Saya sudah memikirkan ini juga. Dari latar belakang C, Anda dapat mensimulasikan jenis kode pengembalian fungsi, serta, tipe parameter, menggunakan sesuatu seperti berikut:
Nomor sebelum fungsi panggilan mengembalikan tipe angka terlepas dari jenis nilai aktual yang dikembalikan, seperti yang terlihat pada panggilan kedua di mana typeof rc = angka tetapi nilainya NaN
log.log untuk di atas adalah:
sumber
TypeScript adalah salah satu solusi terbaik untuk saat ini
https://www.typescriptlang.org/
sumber