我知道在javascript中,+运算符有时可以充当串联运算符,而不是加法运算符,但是令我惊讶的是它正在为我拥有的代码执行此操作:
private getDefaultWeeks(year:number):week[]{
let date = new Date(year,0,1);
var currentDate= new Date();
currentDate = this.dateService.getFirstMonday(date);
while (currentDate.getFullYear()<(year+1)) //gets stuck here
..............
}
因此在我的示例中,例如(year + 1)有时会被翻译成20181
鉴于该年份已经输入数字,有人可以向我解释为什么会这样,什么是最佳解决方案。我可以将year + 1拉到一个新变量中,但本能地认为这是一个不需要存在的变量。
答案 0 :(得分:2)
即使您将其键入“数字”,如果您使用字符串调用getDefaultWeeks,它也将被视为字符串(不会进行强制转换)。 您确定要用数字呼叫getDefaultWeeks吗?
答案 1 :(得分:1)
如果是这种情况,则需要将其强制转换为数字:执行(+year + 1)
应该可以。请记住,TS实际上无法为您自动将其强制转换为数字,并且在运行时也无法检测到它是否是字符串。即使这是一个权宜之计,您仍需要检查为什么getDefaultWeeks()
被传递了一个字符串作为参数。