我不知道这里发生了什么......但显然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
这是例外:
关于什么错误的任何想法?
谢谢!
修改
顺便说一下,我不认为它与Date variable works, but functions on it do not有关,因为我创建了一个新的std::bind
答案 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