TS 有没有强制 if 判断括号里面必须布尔值的配置

291 天前
 ChrisFreeMan

好几次因为疏忽导致的 bug 都没发现,类似这样的疏忽,而且没有警告,往往很久后才发现。

function someBol(): boolean {
  return true
}

if (someBol) {
  doSomething()
}

1965 次点击
所在节点    程序员
19 条回复
codehz
291 天前
eslint 有规则 @typescript-eslint/no-unnecessary-condition
ChrisFreeMan
291 天前
@codehz 多谢多谢,看了逃不了 eslint 了。
chnwillliu
291 天前
打开 strictNullChecks 试试?

This condition will always return true since this function is always defined. Did you mean to call it instead?ts(2774)
thinkershare
291 天前
你这个 SomeBol 就不应该声音返回类型位 boolean, 而是应该声明位 true 类型。
Wxh16144
291 天前
+1 ,我也遇到过好几次这个问题。 不知道 1 楼的 eslint 有没有效果。先去看看
intmax2147483647
291 天前
确实容易疏忽掉,第一眼竟然没看出问题🤣老了

```
if (someBol()) {
doSomething()
}
```
gogogo1203
291 天前
最好还是
```
const isSomething= someBol()

if(isSomething){
doSomething()
}
```

多一个变量就多一个吧,更好阅读理解。
yinmin
291 天前
if (someBol() === true) {
doSomething();
}
zhangjiancheng
291 天前
@yinmin 直接 if(!!someBol())就行了
liuidetmks
290 天前
借楼

ts 没有条件编译,提议被否了,我觉得挺遗憾的

似乎前端都喜欢用 minijs 之类的把测试代码删掉

但是,有时候代码测试代码比较复杂,是 async await 写法,编译出来的 js 是个状态机跳转,minifyjs 无能为力。
ChanKc
290 天前
XXWHCA
290 天前
TS 不是说强类型语言吗,怎么还能这么写,编译不会报错吗
ChrisFreeMan
290 天前
@XXWHCA 我也纳闷 TS 为什么允许这种判断,我觉得这种情况应该报错的。
ChanKc
290 天前
ChrisFreeMan
290 天前
@ChanKc 我开着呢,如果是判断 true 类型确实是有警告,但是前面加个!判断否定的时候就没有😅很奇怪
ChrisFreeMan
290 天前
@chnwillliu 这个在判断 true 类型的时候确实可以,但是前面加个!取否的时候就失效了。
ChanKc
289 天前
ChrisFreeMan
289 天前
@ChanKc 嗯嗯,现在暂时先用 eslint 顶着,不过我还是不喜欢太多插件,以后我应该会强迫自己写 fuc() === true 这类的语法吧,好过把项目环境搞的太过复杂。
ChrisFreeMan
289 天前
@ChanKc 最好是出现一个 js 的替代语言😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/972807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX