私はたくさん使う予定のJavaScriptライブラリを作成しており、最終的に一般公開することがあります。今、私はこのように機能し、「クラスのコンストラクタ」の定義をたくさんやっている:JavaScriptクラスで強力なデータ型を強制する必要がありますか?
function Point(x, y)
{
this.y = typeof y !== 'undefined' ? y : 0;
this.x = typeof x !== 'undefined' ? x : 0;
if (typeof this.x === "number" && typeof this.y === "number")
{
this.x = x;
this.y = y;
}
else if (this.x instanceof Point && typeof this.y === "undefined")
{
this.x = x.x;
this.y = x.y;
}
else
{
throw ("Point() Constructor: Invalid arguments.");
}
}
これは私だけではなく、この「クラス」は、「二つの異なるコンストラクタ」を持つことができますが、それはまたことを保証しますオブジェクトがインスタンス化されると、オブジェクトには予期される型があり、そうでなければ半有用なエラーがスローされます。
これはすべてしばらくの間は良いアイデアのようでしたが、今は私がその方法に慣れ親しんでいるので、他の制作JavaScriptソース(たとえばMozillaのものなど)を見てきました。人々は本当にこれをしないので、第二の考えを持って開始します。そして、今私は、「厳密な型定義標準に準拠するように疎結合型言語を強制しようとしているのはなぜですか?
エラー処理と型チェックに関して、JavaScriptライブラリの今後の標準は何ですか?
this questionと少し関連しているかもしれませんが、私は自分のものを書いています。
私はあなたが入力を強制しているとは思わない、あなたは 'Date()'のように柔軟な入力を許可している... – dandavis
@dandavis多分それは最良の例ではなかった。私はすべての型チェックにもっと関心があります。 ONEパラメータを持つ単純な関数であっても、タイプチェックをしていて、間違ったタイプが与えられた場合はエラーを投げます。 –