今日は頭がおかしくなった。私はIEデバッグモードでしばらく時間を過ごし、いつものようにWebを閲覧しましたが、多くのエラーが表示されます:)これらのエラーのほとんどは、一部の値が予想とは異なるタイプであるためです(少なくともエラーを解釈する限り)メッセージ)。
JavaScriptや同様のスクリプト言語が強く型付けされない理由は何ですか?言語を「理解しやすく」、アクセスしやすくするだけなのか、それとも「コンパイル時」の欠如が本当の問題なのか。
今日は頭がおかしくなった。私はIEデバッグモードでしばらく時間を過ごし、いつものようにWebを閲覧しましたが、多くのエラーが表示されます:)これらのエラーのほとんどは、一部の値が予想とは異なるタイプであるためです(少なくともエラーを解釈する限り)メッセージ)。
JavaScriptや同様のスクリプト言語が強く型付けされない理由は何ですか?言語を「理解しやすく」、アクセスしやすくするだけなのか、それとも「コンパイル時」の欠如が本当の問題なのか。
強いタイピングが確実に利用できるはずです。Actionscript 3は強く型付けされていますが、動的オブジェクトが必要な場合は、プロトタイプの継承とワイルドカード型があります。
その機能を利用できることのデメリットはありません。中規模から大規模のプロジェクトでは、強い型付けによってATONの問題を防ぐことができます。それを最大限に活用するには、エラーを報告してオートコンプリートオプションを提供できるように、IDEのサポートが必要ですが、実際のクラスと強い型付けがあれば、Javascriptはまったく新しい世界になります。
入力しないことで柔軟性が得られます。私は個人的に弱いタイプの言語を楽しんでいます。
したがって、答えは、メリットとデメリットがあるということです。
ブラウザで強い型の言語が必要な場合は、GWTとScript#を利用できます。
javascriptや同様のスクリプト言語は、強く型付けされることでメリットがありますか?
はい、そうです、JavaScript 2.0は型システムを導入しています:
型システムJavaScript2.0は、型の概念をサポートしています。これは、考えられるすべての値のサブセットと考えることができます。Object、Number、Stringなどの組み込み型がいくつかあります。各ユーザー定義クラス(セクション6)もタイプです。
http://timkadlec.com/2008/04/an-objective-look-at-javascript-2-0-strong-typing/も参照してください。
一般に、強い型付けのサポートは、コンパイルと最適化のパスに多くの興味深い機会を提供します。
私自身の意見:スクリプトを実行する前に、スクリプトを解析することができます。これはほとんどのタイプエラーをキャッチし、ユーザーが部分的に実行されてから終了したスクリプト結果を見る必要がないことを意味します。さらに良いことに、パーサーがあれば、デバッグがはるかに簡単になります:)
ほとんどのスクリプト言語の弱い型の側面が好きです。パフォーマンス以外に強く型付けしたい唯一の理由は、ツールが弱い型よりも強い型の言語をリファクタリングする方が簡単だからです。
昔、ActionScript2でeラーニングのラピッドプロトタイプフレームワークを構築しました。私の最大の不満は、AS2が強く型付けされておらず、デバッグ時に多くの頭痛の種になることでした。強く入力するとコードが読みやすくなると思います。弱い型の言語の方が柔軟性が高いと思います。
6か月前に書いたコードに戻って何が起こっているのかを理解する必要があるときは、読みやすさにもっと傾いています。
Microsoftは、typescriptを使用して、暫定的に強い型付けの問題を解決するために長い道のりを歩んできました。見てください: