我有一个使用 html、css 和 jQuery 制作的静态应用程序。我现在将它导入到 Angular 2,但我遇到了日期问题:
// GET DATE
let d = new Date();
let day = d.getDay() + 1;
let date = d.getDate() + 1;
let datePostFix;
// POST FIX DATE ST ND RD TH
if (date == 1 || date == 21 || date == 31 && date !== 11) {
let datePostFix = "st"
} else if (date === 2 || date === 22 && date !== 12) {
let datePostFix = "nd"
} else if (date === 3 || date === 23 && date !== 13) {
let datePostFix = "rd"
} else {
let datePostFix = "th"
}
基本上每个 if 语句都会在 !== 上出错。我得到的错误是 [ts] 运算符 '!==' 不能应用于类型 '31' 和 '11',但我不明白它是一个数字。
任何帮助表示赞赏。
谢谢!
Typescript 试图让您免于编写无效的代码。当它到达date !== 11
零件时,它知道它date
必须是 1、21 或 31(因此date
有一个类型1 | 21 | 31
,这是一个联合类型 - 请参阅高级类型)。它知道这些数字都不可能等于 11,因此它试图告诉您不应将其与 11 进行比较。
如果删除!==
比较,代码的行为将完全相同:
if (date == 1 || date == 21 || date == 31) {
let datePostFix = "st"
} else if (date === 2 || date === 22) {
let datePostFix = "nd"
} else if (date === 3 || date === 23) {
let datePostFix = "rd"
} else {
let datePostFix = "th"
}
编辑:正如@missingmanual 所指出的,d.getDate() + 1
几乎肯定不是你想要的。在大多数情况下,这将为您提供明天的日期(因为getDate()
已经返回了 1-31 形式的数字)。在某些情况下,这甚至可能会给您一个无效的日期(例如,如果今天是 31 日,您将得到 32)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句