gpt4 book ai didi

jquery - 转向 Typescript,数字错误

转载 作者:行者123 更新时间:2023-12-01 07:06:10 27 4
gpt4 key购买 nike

我有一个使用 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 ,它是联合类型 - 请参阅 Advanced Types )。它知道这些数字都不可能等于 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 号)

关于jquery - 转向 Typescript,数字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44477128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com