TypeError:formats.dateTimeString.toISOString 不是函数

Posted

技术标签:

【中文标题】TypeError:formats.dateTimeString.toISOString 不是函数【英文标题】:TypeError: formats.dateTimeString.toISOString is not a function 【发布时间】:2015-11-16 08:56:45 【问题描述】:

我是 TypeScript 和 AngularJS 的新手,我正在尝试从我的 API 转换日期,类似于:

"8/22/2015"

...到 ISO 日期。日期被正确反序列化为 Date 类型的 TypeScript 属性。但是,当我尝试以下命令时(在打字稿中,this.dateDisplay 是字符串类型)

this.dateDisplay = formats.dateTimeValue.toISOString();

我得到错误:

TypeError:formats.dateTimeValue.toISOString 不是函数 在 dataFormatsTests.js:42 在 processQueue (angular.js:14567) 在 angular.js:14583 在 Scope.$get.Scope.$eval (angular.js:15846) 在 Scope.$get.Scope.$digest (angular.js:15657) 在 Scope.$get.Scope.$apply (angular.js:15951) 完成后(angular.js:10364) 在 completeRequest (angular.js:10536) 在 XMLHttpRequest.requestLoaded (angular.js:10477)

我也去过this site,它说我的浏览器支持toISOString功能。

所以,我的问题是:为什么我的浏览器或 Angular 或其他任何东西无法识别 toISOString 函数?

【问题讨论】:

您确定formats.dateTimeString 是一个Date 对象吗?它似乎不是 Date 对象,因为 toISOString 不是函数。 是的,这绝对是约会。我对属性名称的选择不当(我已经经历了几次迭代,试图让它工作,但我没有更新属性名称)。我将编辑我的问题以使其更清楚。谢谢! 如果您执行alert(formats.dateTimeString.toString()); 之类的操作或使用console.error(..);(如果这更适合您的用法)会显示什么。 这是一个类型错误,所以它实际上是否是 Date 并不重要,因为无论哪种方式,TypeScript 都不认为它是 Date。转到定义dateTimeValue 的位置并确保其类型为Date。您可以在之后检查实现。 【参考方案1】:

虽然 dateTimeValue 在 TypeScript 中定义为 Date,但它在运行时被实例化为字符串,因为它是从 API 中提取的。因此,TypeScript 编译得很好,但是当 javascript 运行时,它看到 .toISOString() 被调用是针对字符串,而不是日期。

【讨论】:

我刚回来检查,实际上我把它弄反了,但我很高兴它在某种程度上有所帮助:)【参考方案2】:

Moment.js 为 Date 对象创建一个包装器。formats.dateTimeValue 不是包装器对象。要获取此包装器对象,只需使用支持的输入类型之一调用 moment()。所以像这样转换它:

this.dateDisplay = moment(formats.dateTimeValue).toISOString();

我已经解决了上面的问题。

【讨论】:

以上是关于TypeError:formats.dateTimeString.toISOString 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

Django TypeError - TypeError: issubclass() arg 1 必须是一个类

pyspark:TypeError:'float'对象不可迭代

Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's

TypeError: key 必须是一个字符串,一个缓冲区或一个对象在 typeError 与 GCP 文件存在

TypeError: jQueryxxxxxx 不是函数