打字稿不承认日期为日期?

时间:2016-11-11 16:42:25

标签: typescript

我不知道这里发生了什么......但显然TS没有将日期识别为日期,而是认为它是一个字符串。

这是我用来保存var validUntil = new Date(); validUntil.setSeconds(validUntil.getSeconds() + tokenResponse.expires_in); tokenResponse.valid_until = validUntil; 的代码:

TokenResponse

这是我的export class TokenResponse { access_token: string; token_type: string; expires_in: number; valid_until: Date; error: string; error_description: string; } 课程:

userToken && userToken.valid_until.getTime()  >= new Date().getTime()

以下是引发异常的地方:

Date

这是例外:

enter image description here

关于什么错误的任何想法?

谢谢!

修改

顺便说一下,我不认为它与Date variable works, but functions on it do not有关,因为我创建了一个新的std::bind

1 个答案:

答案 0 :(得分:2)

在此处未发布的代码中,userToken.validUntil的值被设置为字符串。如果您在调用typeof userToken.validUntil错误的代码部分之前检查getTime(),您会看到。

确保在设置userToken.validUntil时始终为其分配Date个对象。如果您要将JSON反序列化为userToken,请确保反序列化器将日期字符串转换为日期对象或快速修复(尽管不推荐):

userToken.validUntil = new Date(userToken.validUntil as any);

请注意以下事项:

var o = { d: new Date() };
localStorage.setItem("test", JSON.stringify(o));
o = JSON.parse(localStorage.getItem("test"));
typeof o.d === "string"; // true