变量后面加感叹号,加了个寂寞

所以结论就是,你还是存在 需要ts帮你做非法判断 的需求,这点跟你之前说的是自相矛盾的

我的目的就是不做非法判断,这样出现异常数据才会报错,我才能及时纠错

但是你不希望 ts 帮你把 undefined 的情况也判断了,你觉得 ts 太吵了,那把 strict 关了不就好了,这个开关就是为你量身订造的

我什么时候说过不需要ts帮我做非法判断了?我一直用ts啊,每个变量都很严谨的定义类型,这样出现任何类型错误都会及时提醒。
我是说严格模式没意义,你先看懂我一直在表达的意思。

我的目的就是不做非法判断

1赞

中间截取几个字,不理会上下文的么?
你玩活字印刷术呢

其实这个小哥已经说得很直接了。这个语言特性是有用的!

但是这个语言特性的有用,本质上是因为没有更好的选择。因为 TS 不想碰 JS 的东西!也就是说 TS 不能改变任何 JS 行为,TS 只是类型检查系统!

如果 TS 能够扩展 JS,那这里只要实现一个 match,就能更加优雅的解决各种空指针问题,那就不需要感叹号了。现代编程语言,像是 Rust、Python 都能用 match 表达式,虽然不能完全避免开发者绕过空值检查,但是比起 if else 或者 ! 要严谨许多。

因此,放眼其它语言,其实楼主的问题,我也可以翻译成:Rust 允许 Option 进行 unwrap(),Option 怎么能 unwrap?unwrap 了个寂寞!

我的意思一直是,大部分非空判断是不需要的,能报错的尽量让他报错,这样才能及时纠错,因此不需要严格模式来强迫做非法判断。

自己写的业务逻辑这么处理没问题。但是如果是第三方服务,或者跨模块调用,或者是用户的输入,你不判空试试……

这种问题纠结啥,这帖子这么久还有人跟