ES6 sepenuhnya tersedia di Node 4. Saya ingin tahu apakah ES6 menyertakan konsep antarmuka untuk mendefinisikan kontrak metode seperti pada MyClass implements MyInterface
.
Saya tidak dapat menemukan banyak hal dengan Googling saya, tetapi mungkin ada trik atau solusi bagus yang tersedia.
javascript
node.js
interface
ecmascript-6
Jérôme Verstrynge
sumber
sumber
Jawaban:
Antarmuka bukan bagian dari ES6 tetapi kelas adalah.
Jika Anda benar-benar membutuhkannya, Anda harus melihat TypeScript yang mendukungnya .
sumber
Dalam komentar debiasej menulis artikel yang disebutkan di bawah ini menjelaskan lebih lanjut tentang pola desain (berdasarkan antarmuka, kelas):
http://loredanacirstea.github.io/es6-design-patterns/
Buku pola desain dalam javascript mungkin juga berguna untuk Anda:
http://addyosmani.com/resources/essentialjsdesignpatterns/book/
Pola desain = kelas + antarmuka atau beberapa warisan
Contoh pola pabrik di ES6 JS (untuk menjalankan: node example.js):
sumber
Mengingat ECMA adalah bahasa yang 'bebas kelas', menerapkan komposisi klasik tidak - menurut saya - masuk akal. Bahayanya adalah, dengan melakukan itu, Anda secara efektif mencoba merekayasa ulang bahasa (dan, jika seseorang merasa kuat tentang itu, ada solusi holistik yang sangat baik seperti TypeScript yang disebutkan di atas yang mengurangi penciptaan kembali roda)
Sekarang bukan berarti komposisi itu keluar dari pertanyaan namun di Plain Old JS. Saya meneliti ini panjang lebar beberapa waktu lalu. Kandidat terkuat yang pernah saya lihat untuk menangani komposisi dalam paradigma prototipe objek adalah stampit , yang sekarang saya gunakan di berbagai proyek. Dan, yang terpenting, ini mematuhi spesifikasi yang diartikulasikan dengan baik.
informasi lebih lanjut tentang perangko di sini
sumber
class
hanyalah sinonim daristruct
. Bahasa yang benar-benar klasik seperti Smalltalk? Hal ini memungkinkan perpanjangan dinamis dari prototipe dan bahkan instanceIni adalah solusi saya untuk masalah tersebut. Anda dapat 'mengimplementasikan' banyak antarmuka dengan mengganti satu Antarmuka dengan yang lain.
EDIT:
Saya meningkatkan kodenya sehingga Anda sekarang dapat menggunakan implement (baseClass, interface1, interface2, ...) dalam perpanjangan.
sumber
ada paket yang dapat mensimulasikan antarmuka.
Anda dapat menggunakan es6-interface
sumber