我在ASP.NET MVC 5项目中使用TypeScript 1.4。
我有一个Date类型的字段,它可以部分工作:
var dob: Date = result.dateOfBirth;
alert(dob);
var dobAsString = dob.toDateString();
在上面的代码中,前两行有效,按预期显示值为“1968-11-16T00:00:00”。但是最后一行不起作用,实际上该行下面的其余代码甚至没有执行 - 它只是中断,没有错误消息。
无论我在最后一行应用哪个Date函数,此行为都会持续存在;我也可以使用dob.getFullYear()
等等,每次都会失败。然而,变量属于正确的类型且具有正确的价值。编译器还可以找到Date函数,它可以毫无障碍地编译,但在运行时它会失败。有什么想法吗?
答案 0 :(得分:20)
这个有两个方面。首先,您需要解析日期,因为您当前有一个字符串表示。第二个是您的array_map()
变量没有类型信息。
result
当您收到JSON消息时,您可以应用一个描述服务器发送内容的接口,以便捕获TypeScript代码中的问题 - 例如您找到的问题。这将在将来再次停止发生问题(尽管不检查提供的JSON是否与界面匹配)...以下示例假定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;
当前具有result
类型。
any