为什么 TypeScript 在第二行还会认为 b 可为 null?应该怎样写更好?

2022-12-31 15:08:10 +08:00
 ruxuan1306
![nz8B8.png]( https://i.328888.xyz/2022/12/31/nz8B8.png)

[Playground Link]( https://www.typescriptlang.org/play?#code/GYVwdgxgLglg9mABAQwCaoBTIFyLCAWwCMBTAJ0QB88QAbWgGkSN32PKpvoEpEBvAFCJhiGMERZEAXhldaiAGQLm02fh6IyJKCDJJ1tANxCRYiclVS5vLTr3NDiAPROJAB2RlkBbeV4sadgpqAxNhMwwiS2tNbV0kZGMRRDDYuwSAaiJjAF8BIA)
782 次点击
所在节点    问与答
3 条回复
enchilada2020
2022-12-31 15:31:27 +08:00
因为去掉第一行判断 逻辑依然成立吧
最后 a+b 的时候两者类型都是 number 没什么问题
你把第二行判断和第三行调换一下 结果也是一样的
还可以写成

if (a!==null &&b!==null) return a+b;
return a??b;
TWorldIsNButThis
2022-12-31 15:33:52 +08:00
直接嵌套 if
不整这些 early return

if + else 是完备( exhaustive )的而 early return 不一定是,比如第一句
LLaMA2
2023-01-04 15:01:16 +08:00
if(a && b) { return a + b}
else {return a ?? b}

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

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

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

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

© 2021 V2EX