Pegjs: Dukungan TypeScript palsu

Dibuat pada 31 Jan 2018  ·  8Komentar  ·  Sumber: pegjs/pegjs

Jenis masalah

  • [x] Permintaan Fitur

Wut

Jadi, saya sebenarnya cukup menyukai plugin TypeScript @pjmolina dari #514. Namun, pada akhirnya, ia mengembalikan all .

Saya berharap bahwa Anda akan membantu saya menipu. Saya sebenarnya hanya ingin menulis tanda tangan ke parse/1 sedikit berbeda, dengan menambahkan beberapa hal ke sintaks peg yang mengatakan "jadikan ini jenis pengembalian parse/1 ," dan juga dengan menandai argumen in :string jika ada tipe out. Kemudian, Anda hanya perlu mengetik secara membabi buta nilai pengembalian terakhir, et voila.

Untuk pengguna TypeScript (atau flowtype), ini akan berdampak besar pada kemampuan pemeriksaan, meskipun itu fake .

Berapa banyak cappucino yang saya perlukan untuk mengirimi Anda surat untuk mewujudkannya, dan ke alamat mana saya akan mengirimnya?

Komentar yang paling membantu

Hai! Terkait dengan ini, dalam plugin ts-pegjs kami telah menerapkan pengetikan keluaran opsional untuk aturan produksi. Edisi 11 , PR 16

Kami melakukannya menggunakan tabel pasangan "rule-name": "return-type" melalui opsi returnTypes .

Saya cc Anda, untuk berjaga-jaga jika Anda memutuskan untuk secara opsional menambahkan informasi jenis pada pegjs di tingkat DSL ke produksi anonnate secara langsung.
Ini bisa sangat berguna untuk output TypeScript, juga untuk Flow, atau varian JS yang diketik lainnya.

Semua 8 komentar

Yang saya butuhkan hanyalah tanda tangan fungsi ditulis seperti

function parse(input: string): MyType { ... }

(atau terserah)

Anda bisa terinspirasi oleh ini . Sebelumnya perlu memberi label jenis semua blok kode, itu bisa dilakukan dengan anotasi . Setelah pekerjaan persiapan ini dimungkinkan untuk memasukkan informasi tentang jenis-jenis di generator.

@Mingun - ini menarik, tetapi juga sangat sulit untuk dipahami

Hal anotasi Anda tampaknya menjadi kasus yang hampir ideal di sini - yang akan memungkinkan anotasi aturan penguraian individu dengan tipe, memungkinkan pengembalian lebih dari satu tipe nyata

(Momen aneh ketika saya mengerti @Mingun juga orang Rusia.)

Sebenarnya TypeScript tidak akan membuat pengembangan tata bahasa lebih mudah, karena Anda harus membubuhi keterangan jenis di mana-mana, dan karena sistem jenisnya agak rusak. Baru-baru ini saya membuat percobaan kecil untuk membuat PEG.ts, dan pemeriksa tipe TypeScript memuntahkan pesan kesalahan yang mengerikan ketika saya memasukkannya dengan tipe rekursif, sehingga saya bahkan tidak bisa menyelesaikannya.

Saya akan merekomendasikan untuk melihat lebih jauh ke dalam dukungan Infernu .

@polkovnikov-ph - ya, pilihan itu tidak ada di tangan saya, dan selain itu, sebagai c++ template dev 1990-an, pesan kesalahan TypeScript tidak membuat saya takut

lagi pula, yang saya butuhkan adalah untuk dapat menambahkan parser ke sistem TypeScript, jadi, ini adalah nilai bagi saya untuk mendapatkan anotasi TypeScript dari parse/1

sekarang saya melakukannya dengan tipe master kotor dan casting. saya berharap saya bisa melakukan yang lebih baik

image

Hai! Terkait dengan ini, dalam plugin ts-pegjs kami telah menerapkan pengetikan keluaran opsional untuk aturan produksi. Edisi 11 , PR 16

Kami melakukannya menggunakan tabel pasangan "rule-name": "return-type" melalui opsi returnTypes .

Saya cc Anda, untuk berjaga-jaga jika Anda memutuskan untuk secara opsional menambahkan informasi jenis pada pegjs di tingkat DSL ke produksi anonnate secara langsung.
Ini bisa sangat berguna untuk output TypeScript, juga untuk Flow, atau varian JS yang diketik lainnya.

Orang-orang masih menanyakan ini di #597

Pengelola baru membuat dan menyimpan .d.ts , jadi dia jelas terbuka untuk TypeScript

Ini adalah hari yang sama "kami memiliki TypeScript" tanpa perubahan besar, yang dapat dilakukan dalam lima baris kode ditambah footer modul es6 pengganti. Saya tidak mengerti mengapa itu tidak dilakukan

Saya memiliki tambalan yang siap untuk 0.11 tetapi 0.11 tidak digabung, dan 0.12 tidak tersedia untuk digunakan

Apakah halaman ini membantu?
0 / 5 - 0 peringkat