2016-07-19 11 views
4

Typescriptを使用してライブラリを作成しているとします。次の関数がありsignature-Javascriptを呼び出すのを防ぐエラーなしのTypescript

function check(value: "YES"|"NO"): boolean 

ので、この機能は、「YES」か「NO」、コンパイルエラーが発生します以外の値を持つ他のtypescriptですファイルから呼び出されたとき。しかし、Javascriptファイルから呼び出された場合は、Javascriptに型情報がないため、エラーは発生しません。関数内の無効な値をチェックしてエラーをスローすることができます。しかし、Typescriptによって提供される型の安全性は私にとっては幻想に過ぎません。

この場合、ライブラリ開発者として何をすべきですか?純粋なjavascriptと一緒に行く? Angularのようなチームは何をしましたか?

+0

あなたはあなたが一番いいと思います。この質問には*客観的な答えはなく、そういうわけではありません。 * "...この質問への回答はほとんど全面的に意見に基づいている傾向があります" * –

+0

私はTypescriptに精通していませんが、私が理解しているところでは、コンパイル時に純粋なjavascriptに変換されます。つまり、typescriptコードの代わりにコンパイルされたコードを渡すと、それは意図した通りに動作するはずですか?私はこの点も守っています。typescriptは、制限を設けてエラーを防ぐことでコードを助けることを目的としています。それがコンパイルするJSは実際に製品に入るものです。だから、あなたがタイプコピーを使用するように社会を強制することはできないので、あなたのコードを「エラーフリー」にするために実際にタイプスクリプトを使うことはできません。 – Dellirium

+0

@ T.J.Crowder私はプログラマーにこれを尋ねるべきですか? – Gulshan

答えて

2

これは、ビルド時(コンパイル時)と実行時エラーチェックの違いです。 TypeScriptは、ビルド時間のチェックに役立ちます。ライブラリにTypeScript定義ファイルを提供すると、libを間違って使用すると、ユーザが意味のあるコンパイル時エラーを得るのに役立ちます。

JavaScriptがJavaScriptを直接使用している場合は、ユーザーに通知するためのビルドステップがないため、ランタイムメッセージングに頼らざるを得ません。ファイルサイズは問題ではない場合、私は意味のあるエラーメッセージを投げることをお勧めしたい:

function (check) { 
    if (check != "YES" && check != "NO") 
    throw new Error("Invalid Check Value: " + check); 
    ... 
} 

ファイルの大きさが気になる場合は、無効な呼び出しで単純にノーオペレーションに、おそらく最高。または、ある種の賢明なデフォルトを持っている。あなたの状況によって異なります。

また、ライブラリの「デバッグ」ビルドを検討してエラーメッセージを表示することもできますが、それらをミニリリースビルドから除外することもできます。

関連する問題