ML からインスピレーションを得た言語のファンとして、私は ReScript に常に興味をそそられていました。最近 async-await が言語に追加されたので、ReScript が輝く時が来たのでしょうか?
確かに魅力的ですね:
...ReScript を長い間知っていたかのように、ReScript を手に取り、広大な JavaScript エコシステムとツールにアクセスできます1
他の人が作成した既製のバインディング ライブラリを検索する必要はありません。 ReScript には、TypeScript の DefinitelyTyped に相当するものは必要ありません。2
このプロジェクトの目標は何ですか?
私たちは、JavaScript プラットフォームに最高の型付き言語エクスペリエンスを提供することを目指しています。3
すごいですね。事前に作成されたバインディングを必要とせずに、JavaScript プラットフォームに最高の型付き言語エクスペリエンスを提供します。やってみよう!
可能な限り最も基本的なことを実行しようとすると、すぐに壁にぶつかります。
うーん、なぜ getElementById がドキュメントにないのですか?書類の種類は何ですか?
この画像が ReScript ドキュメントで説明されているすべてです。 Dom.document の定義がありません。 F12 キーを押すと空の型定義のチェーンが表示されるため、Dom.document は JS ドキュメントの単純なエイリアスのように見えますが、それ以上のものではありません。
待って、事前に作成されたバインディングが必要ですか? 「他の人が作成した事前に作成されたバインディング ライブラリの検索を強制しません」はどうなりましたか?
Recipe-webapi npm パッケージ、DOM およびその他のブラウザー固有の Web API へのバインディング を入力します。指示に従ってコンパイラ エラーを実行します。その中には、このファイルの名前が "rescript.json" になっているにもかかわらず、"bsconfig.json" に構成の問題がある可能性があることを示すエラーも含まれています。最終的にはうまくいくようになります。
次のようになります:
let elem = document->Document.getElementById("id") // For the uninitiated, -> is the pipe operator. // a->foo means foo(a) // a->foo(b) means foo(a, b) // The above code is therefore equivalent to let elem = Document.getElementById(document, "id")
その文書に気づくでしょう。基本的にまだ入力されていないため、コード補完は表示されません。どのモジュールとモジュール関数を呼び出すかを知る必要があります。
IDE は正しい文字を入力するのには役立ちませんが、呼び出している関数に関する適切な情報は提供してくれるでしょうか?そうではありません:
参考までに、すぐに使える TypeScript を次に示します。
有益なエラー、例へのリンク、詳細な型定義。ありがとう。これにより、時間と労力が節約され、入力しながら正しく教えてもらえます。これが、私が静的型入力を好む主な理由の 1 つです。 ReScript ではこれが得られません。
DOM との対話 (JavaScript が作成された理由) が、組み込みバインディングを保証するほど重要ではないと考えられる場合、私は十分に理解したと思います。
ReScript は 2024 年に完成しますか?いいえ、その公式文書には完全に誤解を招くような高尚な約束が記載されています。 ReScript は、主に他の ReScript コードと対話する ReScript コードを大量に記述する場合に役立つと思います。しかし、「広大な JavaScript エコシステム」を単純に無視することはできません。 BCL がサポートされていない F# を想像してください。幸いなことに、F# とそのツールは、C# の型とドキュメントをシームレスに利用できるように設計されています。確かに、ReScript で DefinitelyTyped を活用する方法があるはずです。 ReScript がこれを行うまでは、TypeScript と真剣に競合することはできないと思います。
以上がReScript はまだ存在しませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。