首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
宝塔
V2EX  ›  问与答

Typescript 如何防止忘写函数括号?

  •  
  •   MrGba2z · 151 天前 · 1047 次点击
    这是一个创建于 151 天前的主题,其中的信息可能已经有所发展或是发生改变。
    returnFalse () { return false;}


    returnFalse() ---> false
    returnTrue() ---> true


    有什么 test 或者办法可以防止这种惨案么
    第 1 条附言  ·  151 天前
    发现内容写错了。。。。。。囧



    returnFalse () { return false;}


    returnFalse() ---> false
    returnFalse ---> true
    9 回复  |  直到 2019-06-22 12:43:18 +08:00
        1
    leishi1313   151 天前 via Android
    eslint ?虽然不知道有没有这条,实在不行 presubmit 写个正则匹配下
        2
    olantes   151 天前 via Android
    重重地给自己的脑袋来几下,几次之后就记住了
        3
    runze   151 天前 via Android
    只要声明了返回值类型就会报错
        4
    loading   151 天前
    编辑器自动补全没提示吗?
        5
    heimeil   151 天前
    if (returnFalse() === true) { }

    作为参数传递的时候写清楚类型声明就传不了了,直接报错就不会忘了
        6
    marcong95   151 天前
    TS 还有这个问题? returnFalse 明明是个 Function 又不是 Boolean,你往不该放 Function 的地方写了 returnFalse,tsc 不报错吗?
        7
    momocraft   151 天前
    不知如何在语法层解决,如果用 lint 强制 if (boolean) 好像又太超过了

    写测试...吧
        8
    secondwtq   151 天前 via iPad
    划重点:TypeScript

    既然是 TypeScript,那么就通过编译器 hack 或者 lint 之类的静态分析方式,把 “ if (Function)”, “ Function == Boolean ”, :“ Function;” 这种构造给禁掉就行

    当然,“ Function? == Boolean ” 这种还是要留着的
        9
    love   151 天前
    这种类型系统没办法,我也碰到过坑,比如写 hooks:

    const isStarted = useRef(false)
    if (isStarted) { ... } // FUCK
    应该 if (isStarted.current) { ... }
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4600 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 06:10 · PVG 14:10 · LAX 22:10 · JFK 01:10
    ♥ Do have faith in what you're doing.