• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ChrisFreeMan
V2EX  ›  程序员

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

  •  
  •   ChrisFreeMan · Sep 11, 2023 · 3093 views
    This topic created in 1004 days ago, the information mentioned may be changed or developed.

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

    function someBol(): boolean {
      return true
    }
    
    if (someBol) {
      doSomething()
    }
    
    
    19 replies    2023-09-13 15:31:49 +08:00
    codehz
        1
    codehz  
       Sep 11, 2023   ❤️ 1
    eslint 有规则 @typescript-eslint/no-unnecessary-condition
    ChrisFreeMan
        2
    ChrisFreeMan  
    OP
       Sep 11, 2023
    @codehz 多谢多谢,看了逃不了 eslint 了。
    chnwillliu
        3
    chnwillliu  
       Sep 11, 2023
    打开 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  
       Sep 11, 2023
    你这个 SomeBol 就不应该声音返回类型位 boolean, 而是应该声明位 true 类型。
    Wxh16144
        5
    Wxh16144  
       Sep 11, 2023
    +1 ,我也遇到过好几次这个问题。 不知道 1 楼的 eslint 有没有效果。先去看看
    intmax2147483647
        6
    intmax2147483647  
       Sep 11, 2023   ❤️ 1
    确实容易疏忽掉,第一眼竟然没看出问题🤣老了

    ```
    if (someBol()) {
    doSomething()
    }
    ```
    gogogo1203
        7
    gogogo1203  
       Sep 12, 2023
    最好还是
    ```
    const isSomething= someBol()

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

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

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

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

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