文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
八、类型断言
- 有时候你会遇到这样的情况,你会比
TypeScript
更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。 - 通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。
TypeScript
会假设你,程序员,已经进行了必须的检查。
类型断言有两种形式。 其一是“尖括号”语法:
let someValue: any = 'this is a string' let strLength: number = (<string>someValue).length
另一个为 as
语法:
let someValue: any = 'this is a string' let strLength: number = (someValue as string).length
两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在 TypeScript
里使用 JSX
时,只有 as
语法断言是被允许
正确的做法
// 可以使用类型断言,将 something 断言成 string function getLength(something: string | number): number { if ((<string>something).length) { return (<string>something).length; } else { return something.toString().length; } }
错误的做法
// 只能访问此联合类型的所有类型里共有的属性或方法 function getLength(something: string | number): number { ❌ return something.length; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论