玩转TypeScript(3)--类型转换
使用强类型变量常常需要从一种类型向另一种类型转换,通常使用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")[];
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")[]; However, unfortunately you cannot do:
然而,不幸的是你不能像如下这样进行转换: var script = (<HTMLScriptElement[]>document.getElementsByName(id))[]; You get the error
如果是这样你将得到一个错误 Cannot convert 'NodeList' to 'HTMLScriptElement[]' But you can do :
但是你可以: (<HTMLScriptElement[]><any>document.getElementsByName(id))[];
可以看到,在TypeScript中类型转换需要使用<类型>这样的语形式,在javaScript语言中类型的转换是透明隐式的进行的,但是在TypeScrpt中,必须得进行一次显示的转换:
var script=<HTMLScriptElement>document....
类型断言仅仅只是TypeScript的设计时期的特性,被设计用于确保你能够从一种类型转换成另一种类型,TypeScript使用了结构类型,如果一个Duck对象具有相同的方法和属性,那重叠就可以进行相互的转换.
玩转TypeScript(3)--类型转换的更多相关文章
- 玩转TypeScript(引言&文章目录) --初看TypeScript.
JavaScript过去一直被当作一种玩具语言存在,直到2005年以后,这门语言又开始活跃并可以说是火爆,而且随着浏览器版本的不断升级和完善,各种DOM之间的兼容性已经渐渐的被各种技术解决了,比如经典 ...
- 玩转TypeScript(1) --定义简单的类
相对于JavaScript来说,TypeScript增强了强制类型,同时添加了一系列的面向对象的特性,包含:静态类型(Static typing).类(Classes).接口(Interfaces). ...
- 玩转TypeScript(5)--环境声明
环境声明为TypeScript引入了一个作用域,但是对于产生的javaScript程序不会有任何影响.程序员可以使用环境声明来告之TypeScript,一些其他的组将将提供变量的声明.比如,默认情况下 ...
- 玩转TypeScript(3)--数组
数组的语法和语义与C#数组非常相似,首先要指定一个数组名,后跟冒号,冒号后面紧跟数组的类型,数组类型名后面跟方括号表示当前定义的是一个数组,对于一个空的数组定义,可以使用如下的语法: btnArray ...
- 玩转TypeScript(2) --简单TypeScript类型
通过TypeScript的Module和Class,TypeScript提供了相对于javaScript更加清晰的代码构造,相较于javaScript的.js满天飞的代码,用TypeScript,你可 ...
- 在WisOne平台上学习TypeScript
TypeScript是微软公司推出的开源的类型化脚本语言,目的是用于为弱类型的javaScript提供强类型的识别和感知功能,同时它提供了类.接口.继承等相关在javaScript中不容易实现的功能, ...
- Vue 1-- ES6 快速入门、vue的基本语法、vue应用示例,vue基础语法
一.ES6快速入门 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 2 ...
- Vue(1)- es6的语法、vue的基本语法、vue应用示例,vue基础语法
一.es6的语法 1.let与var的区别 ES6 新增了let命令,用来声明变量.它的用法类似于var(ES5),但是所声明的变量,只在let命令所在的代码块内有效.如下代码: { let a = ...
- Vue 简单的总结一
let 变量 1. 局部作用域 2. 不会存在变量提升 3. 变量不能重复声明 const 变量 1. 局部作用域 2. 不会存在变量提升 3. 变量不能重复声明 4. 只能声明常量,不可变得量 th ...
随机推荐
- c语言 数组合并
#include<stdio.h> int main() { int m,n,i,j,k; printf("Enter no. of elements in array1:\n& ...
- ubuntu 14.04 安装 glog
1.下载 git clone https://github.com/google/glog 2.配置 sudo apt-get install autoconf automake libtool 3. ...
- 关于nohup 和 &的使用
nohup 是 no hang up 的缩写,意思是不挂断运行,一直运行下去,永久运行下去,但是注意并没有后台运行的功能 & 是在后台运行的意思 单独使用一个命令,还不能在终端关闭的时候,让 ...
- php7-soap调用wsdl接口报错:Could not connect to host
由php5.6升级到php7.1以上版本,在用soap调用wsdl接口是报错:Could not connect to host 后来经过排查是centos服务器上装有2个版本的openssl造成的. ...
- 雷林鹏分享:Ruby 数据类型
Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...
- 雷林鹏分享:Ruby 方法
Ruby 方法 Ruby 方法与其他编程语言中的函数类似.Ruby 方法用于捆绑一个或多个重复的语句到一个单元中. 方法名应以小写字母开头.如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常 ...
- 构建NCBI本地BLAST数据库 (NR NT等) | blastx/diamond使用方法 | blast构建索引 | makeblastdb
参考链接: FTP README 如何下载 NCBI NR NT数据库? 下载blast:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+ 先了解 ...
- android-------高德地图两点路线和多个点路线绘制
最近朋友需要两点路线和多个点路线绘制这个功能,帮忙弄了一下,写这篇博客与大家分享一下. 两点路线 是起点和终点两个经纬度点,高德绘制出路线,可以实现实线和虚线功能 效果图: 相关属性: mPol ...
- Confluence 6 配置用户目录
一个用户目录是你存储你的用户和用户组信息的地方.用户信息包括有用户的全名,用户名,密码和电子邮件地址以及其他的一些个人信息. 用户组包括有用户组名字,属于这个用户组的用户和有可能属于这个用户组的另一个 ...
- hdu 1258
Sum It Up Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...