vue3 + TS ts判断问题?-灵析社区

一本正经写代码

![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/6dae6e0e8c7e65501e8c45fe402f8f8a.png) 为什么用 > 或 < 判断就要报错啊

阅读量:15

点赞量:0

问AI
分析 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/aa4ed6419efaaf1a87d662bd4a2b35af.png) 这里的"val"是一个可选参数,所以"val"可能为"undefined"。 这其实是"ts"的静态类型检查跟"js"中比较操作符的类型转换比较不同导致。 在"js"中"val > 12",在"val"是"undefined"时,会将"undefined"转换为数字类型"NaN",而"NaN > 12"的结果是"false"(因为"NaN"不和任何值相等)。 在"ts"编译时会进行严格的类型检查,包括对可能为"undefined"的值的处理。"ts"的静态类型检查器不允许在可能为"undefined"的变量上执行不安全的比较操作。 举例 "ts"这样设计其实也是有道理的,例如: function isGreaterThanThreshold(value, threshold) { return value > threshold; } const value = undefined; // 或者没有设置值 const threshold = 10; const result = isGreaterThanThreshold(value, threshold); if (result) { console.log("value > threshold"); } else { console.log("value { if (val == 2 || val > 12) { } }; 这样val就是一个可选的参数了