请问 TypeScript 能做到对象属性存在与否的检查吗?

2018-01-05 12:40:07 +08:00
 gap
譬如传个对方 obj 给方法,在方法中试图访问 obj.notExists,但 notExists 并不存在,TypeScript 能提前检查到吗?
2497 次点击
所在节点    JavaScript
9 条回复
sumanx
2018-01-05 12:43:06 +08:00
if((obj as any). notExists)?
azh7138m
2018-01-05 12:50:47 +08:00
ts 不做运行时检查,全是 ts 写的项目,按道理,能编译就不会有这问题吧
gap
2018-01-05 12:52:25 +08:00
@sumanx 请问这是用 if 来检查?能自动在编译过程中检查吗?
Pastsong
2018-01-05 12:55:36 +08:00
严格模式的 ts 是可以的,不要写 any 之类的,ide 会提示的
Pastsong
2018-01-05 12:56:36 +08:00
它只是做类型检查,毕竟真正的 obj 什么样它是不知道的
pixes4world
2018-01-05 13:00:37 +08:00
既然用了 TypeScript 就尽量不要用 Any 这种弱类型了,本来目的就是利用 TS 强类型的检查嘛. 对于你的问题,首先你的 obj 应该要是一个强类型对象,而不是 any,这样才能利用 TS 的编译检查。如果你的 obj 是未知类型( any ),那么直接利用 js 的 undefined 类型判断就好了。
gap
2018-01-05 13:06:33 +08:00
明白了,非常感谢大家,感觉要显示申明类型好麻烦,但代码多了不做检查 hold 不住...
Kilerd
2018-01-05 13:27:07 +08:00
用 ts 还要用 any 你不如用回 js 算了。
sumanx
2018-01-05 13:54:25 +08:00
@gap 仅仅是检查的时候用了一下 any,没什么问题……不然直接判断编辑器和编译时会报错

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

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

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

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

© 2021 V2EX