首页 新闻 会员 周边

ts官网上说在任意值上访问任何属性都是允许的,可是会报错,为啥

0
悬赏园豆:5 [已解决问题] 解决于 2022-07-08 14:18

qianyu0710的主页 qianyu0710 | 初学一级 | 园豆:181
提问于:2020-09-30 10:53
< >
分享
最佳答案
1

语法上没啥问题,但是,符合语法只能保证编译通过,不能保证运行不出错啊

收获园豆:5
拓拓 | 小虾三级 |园豆:1050 | 2020-09-30 11:22

这样啊,我还以为运行也不会报错的

qianyu0710 | 园豆:181 (初学一级) | 2020-09-30 11:38

可上面那个打印不会报错,直接报的undefined,是因为undefined没有firstName所以报错的嘛

qianyu0710 | 园豆:181 (初学一级) | 2020-09-30 11:43
其他回答(2)
0

原文出自哪里?

E行者 | 园豆:1761 (小虾三级) | 2020-09-30 11:16

@qianyu0710: ts是强类型的,在编译时需要类型检查,any的作用是跳过类型检查,上文给出的只是个示例演示,其实际用处是在有些对象还不明确推测出类型时,编译时跳过类型检查,使其在运行时可以通过。目前的示例只是个示例,并不是实际使用时的具体案例。

https://www.typescriptlang.org/docs/handbook/basic-types.html#:~:text= Basic Types 1 Boolean. The most,is working with... 4 Void. More

上面链接对其进行了阐述:

In some situations, not all type information is available or its declaration would take an inappropriate amount of effort. These may occur for values from code that has been written without TypeScript or a 3rd party library. In these cases, we might want to opt-out of type checking. To do so, we label these values with the any type:

支持(0) 反对(0) E行者 | 园豆:1761 (小虾三级) | 2020-09-30 13:29
0

myName本身就是undefined你还想访问firstName,建议anyThing.myName?.firstName

56180825 | 园豆:1756 (小虾三级) | 2020-09-30 19:36

只有这楼是正解,这是js基础,和ts关系不大

支持(0) 反对(0) guangzan | 园豆:246 (菜鸟二级) | 2020-10-03 09:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册