ASP.NET MVC 5プロジェクトでTypeScript 1.4を使用しています。
Date型のフィールドがあり、部分的に機能します。
_var dob: Date = result.dateOfBirth;
alert(dob);
var dobAsString = dob.toDateString();
_
上記のコードでは、最初の2行が機能し、期待どおりに「1968-11-16T00:00:00」として値が表示されます。しかし、最後の行は機能せず、実際、その行の下の残りのコードは実行されず、エラーメッセージなしで中断します。
この動作は、最後の行でどの日付関数を適用しても持続します。 dob.getFullYear()
なども使用できますが、毎回失敗します。しかし、変数は正しいタイプであり、正しい値を持っています。コンパイラーはDate関数も検出し、問題なくコンパイルしますが、実行時に失敗します。何か案は?
これには2つの側面があります。 1つ目は、現在文字列表現があるため、日付を解析する必要があることです。 2つ目は、result
変数に型情報がないことです。
var result = {
dateOfBirth: '1968-11-16T00:00:00'
};
// Error, cannot convert string to date
var a: Date = result.dateOfBirth;
// Okay
var b: Date = new Date(result.dateOfBirth);
var result2: any = result;
// Okay (not type information for result2)
var c: Date = result2.dateOfBirth;
JSONメッセージを取得したら、サーバーに送信された内容を説明するインターフェイスを適用して、TypeScriptコードで見つかった問題などの問題をキャッチできます。これにより、将来発生する問題が停止します(提供されたJSONがインターフェースと一致するかどうかはチェックしません)...以下の例では、result
が現在any
タイプを持っていると仮定しています。
interface NameYourResult {
dateOfBirth: string;
}
var r: NameYourResult = result;