我是TypeScript和AngularJS的新手,我正在尝试从我的API转换日期,例如:
"8/22/2015"
…到ISO日期.将日期正确反序列化为Date类型的TypeScript属性.但是,当我尝试以下命令时(在typescript中,this.dateDisplay的类型为string)
this.dateDisplay = formats.dateTimeValue.toISOString();
我收到错误:
TypeError: formats.dateTimeValue.toISOString is not a function
at dataFormatsTests.js:42
at processQueue (angular.js:14567)
at angular.js:14583
at Scope.$get.Scope.$eval (angular.js:15846)
at Scope.$get.Scope.$digest (angular.js:15657)
at Scope.$get.Scope.$apply (angular.js:15951)
at done (angular.js:10364)
at completeRequest (angular.js:10536)
at XMLHttpRequest.requestLoaded (angular.js:10477)
我也去过this site,它说我的浏览器支持toISOString函数.
所以,我的问题是:为什么我的浏览器,或角度,或其他什么不识别toISOString函数?
解决方法:
尽管dateTimeValue在TypeScript中被定义为Date,但它在运行时被实例化为字符串,因为它是从API中提取的.因此,TypeScript编译得很好,但是当javascript运行时,它看到.toISOString()是针对字符串而不是Date调用的.