V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChrisFreeMan
V2EX  ›  程序员

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

  •  
  •   ChrisFreeMan · 228 天前 · 1884 次点击
    这是一个创建于 228 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    function someBol(): boolean {
      return true
    }
    
    if (someBol) {
      doSomething()
    }
    
    
    19 条回复    2023-09-13 15:31:49 +08:00
    codehz
        1
    codehz  
       228 天前   ❤️ 1
    eslint 有规则 @typescript-eslint/no-unnecessary-condition
    ChrisFreeMan
        2
    ChrisFreeMan  
    OP
       228 天前
    @codehz 多谢多谢,看了逃不了 eslint 了。
    chnwillliu
        3
    chnwillliu  
       228 天前
    打开 strictNullChecks 试试?

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

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

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

    多一个变量就多一个吧,更好阅读理解。
    yinmin
        8
    yinmin  
       228 天前 via iPhone
    if (someBol() === true) {
    doSomething();
    }
    zhangjiancheng
        9
    zhangjiancheng  
       228 天前   ❤️ 1
    @yinmin 直接 if(!!someBol())就行了
    liuidetmks
        10
    liuidetmks  
       228 天前
    借楼

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

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

    但是,有时候代码测试代码比较复杂,是 async await 写法,编译出来的 js 是个状态机跳转,minifyjs 无能为力。
    XXWHCA
        12
    XXWHCA  
       228 天前
    TS 不是说强类型语言吗,怎么还能这么写,编译不会报错吗
    ChrisFreeMan
        13
    ChrisFreeMan  
    OP
       228 天前
    @XXWHCA 我也纳闷 TS 为什么允许这种判断,我觉得这种情况应该报错的。
    ChanKc
        14
    ChanKc  
       228 天前
    ChrisFreeMan
        15
    ChrisFreeMan  
    OP
       227 天前
    @ChanKc 我开着呢,如果是判断 true 类型确实是有警告,但是前面加个!判断否定的时候就没有😅很奇怪
    ChrisFreeMan
        16
    ChrisFreeMan  
    OP
       227 天前
    @chnwillliu 这个在判断 true 类型的时候确实可以,但是前面加个!取否的时候就失效了。
    ChrisFreeMan
        18
    ChrisFreeMan  
    OP
       227 天前
    @ChanKc 嗯嗯,现在暂时先用 eslint 顶着,不过我还是不喜欢太多插件,以后我应该会强迫自己写 fuc() === true 这类的语法吧,好过把项目环境搞的太过复杂。
    ChrisFreeMan
        19
    ChrisFreeMan  
    OP
       227 天前
    @ChanKc 最好是出现一个 js 的替代语言😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2839 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.