面对TS的奇怪行为.

const isItLanding = false;

if (isItLanding === undefined) { // valid
  return ...;
}

但在这里

const isItLanding = 1;

if (isItLanding === 'undefined') { // error
  return ...;
}

为什么TS不确保不写入无效的比较?我如何才能改变这种行为呢?

我的TS配置如下:

{
  "compilerOptions": {
    "strict": true,
    "target": "esnext",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "importsNotUsedAsValues": "error",
    "allowSyntheticDefaultImports": true,
    "incremental": true,
    "tsBuildInfoFile": ".next/cache/.tscache/",
    "jsx": "preserve",
    "sourceMap": true,
    "baseUrl": ".",
    "paths": {
      "~/*": ["src/*"],
      "test-utils": ["./src/client/test-utils"]
    }
  },
  "exclude": ["node_modules", "cypress"]
}

推荐答案

我在林特找到了https://typescript-eslint.io/rules/no-unnecessary-condition岁的正确规则. 这完全解决了问题!

Javascript相关问答推荐

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

Bootstrap动态选项卡在切换选项卡后保持活动状态,导致元素堆叠

Chart.js V4切换图表中的每个条,同时每个条下有不同的标签.怎么做?

如何在ASP.NET JavaScript中使用Google Charts API仅对绘制为负方向的条形图移动堆叠条形图标签位置

如何将多维数组插入到另一个多维数组中?

为什么我的自定义元素没有被垃圾回收?

使用VUE和SCSS的数字滚动动画(&;内容生成)

让chart.js饼图中的一个切片变厚?

TinyMCE 6导致Data:Image对象通过提供的脚本过度上载

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

不协调嵌入图片

表单数据中未定义的数组键

Firebase函数中的FireStore WHERE子句无法执行

当S点击按钮时,我如何才能改变它的样式?

KeyboardEvent:检测到键具有打印的表示形式

使用Java脚本在div中创建新的span标记

将Windows XP转换为原始数据以在html前端中显示

与find()方法一起使用时,Mongoose中的$or运算符没有提供所有必需的数据

如何调用多个$HTTP.POST请求?