• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

玩转TypeScript(3)--类型转换

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

使用强类型变量常常需要从一种类型向另一种类型转换,通常使用ToString或ParseInt可以来实现一些简单的转换,但是有时候需要像.NET语言中那样将一种类型显示的转换为另一种类型,在TypeScript规范中,被称为"类型断言",它仍然是类型转换,只是语法是有些不同,比如要将字符型的转换成数字型,使用如下所示的语法:

var a:int=<int>someNumberAsString;

这样的语法在javaScript中对DOM编程时可能会产生一些问题,stackoverflow中的提问如下:

anyone know how to cast in TypeScript?
有谁知道如何在TypeScript上进行类型转换
I'm trying to do this:
我试着这样进行转换:
var script:HTMLScriptElement = document.getElementsByName("script")[0]; alert(script.type); but it's giving me an error:
但是返回了一个错误:
Cannot convert 'Node' to 'HTMLScriptElement': Type 'Node' is missing property 'defer' from type 'HTMLScriptElement' (elementName: string) => NodeList

回答如下所示:

TypeScript uses '<>' to surround casts, so the above becomes:
TypeScript使用'<>'来支持转换,因此上面的变成:
var script = <HTMLScriptElement>document.getElementsByName("script")[0]; However, unfortunately you cannot do:
然而,不幸的是你不能像如下这样进行转换:
var script = (<HTMLScriptElement[]>document.getElementsByName(id))[0]; You get the error
如果是这样你将得到一个错误 Cannot convert
'NodeList' to 'HTMLScriptElement[]' But you can do :
但是你可以: (
<HTMLScriptElement[]><any>document.getElementsByName(id))[0];



 

可以看到,在TypeScript中类型转换需要使用<类型>这样的语形式,在javaScript语言中类型的转换是透明隐式的进行的,但是在TypeScrpt中,必须得进行一次显示的转换:
var script=<HTMLScriptElement>document....
类型断言仅仅只是TypeScript的设计时期的特性,被设计用于确保你能够从一种类型转换成另一种类型,TypeScript使用了结构类型,如果一个Duck对象具有相同的方法和属性,那重叠就可以进行相互的转换.

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Typescript学习发布时间:2022-07-18
下一篇:
typescript学习记录-元组(13)发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap