TypeScript学习笔记(二):基本数据类型及数据转换
数据类型
我们来看看TypeScript中的基本数据类型都有哪些。
boolean
布尔值,支持true和false。
var isDone: boolean = false;
默认为undefined,此时其和true与false判断都为false。
var isDone: boolean; function run() {
alert(isDone == true);//false
alert(isDone == false);//false
} run();
所以在使用boolean类型时要记得赋初值,以便避免以后的麻烦。
number
数字类型,如下:
var height: number = 6;
首先,TypeScript中对于数字只有这么一种类型,没有byte、short、int、uint、long、float、double等类型,而TypeScript的number实际上是一个64为的双精度浮点数,可以看做其它语言中的double类型。
需要注意的是,当不进行初始赋值时,所有的基本数据类型都默认为undefined类型,下面不再重复讲解。
string
字符串类型,如下:
var name: string = "bob";
name = 'smith';
字符串的使用与JavaScript一致。
any
表示为任意类型,如下:
var notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
我们发现notSure可以设定为任意的类型。
我们也可以将其用在数组上,如下:
var list:any[] = [1, true, "free"];
list[1] = 100;
undefined和null
null和undefined基本是同义的,只有一些细微的差别。
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。
null表示"没有对象",即该处不应该有值。
参考:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html
void
用在函数返回值,和C++、Java用法一致,表示没有返回值:
function warnUser(): void {
alert("This is my warning message");
}
Array
数组类型,可以有两种写法,如下:
var list:number[] = [1, 2, 3];
var list:Array<number> = [1, 2, 3];
二维数组
var num: string[][] = [["asdf", "zxc"],["adsf"]];
其它使用方法和JavaScript中一致。
Object
可以当做Hash表来使用,如下:
var obj: Object = {}; function run() {
obj["a"] = 123;
//obj.b = "asdf";//这种写法是错误的
obj["b"] = "asdf";
obj[100] = true; delete obj["100"];//删除使用 delete 关键字 for (var key in obj) {
alert(key);
alert(obj[key]);
}
} run();
需要注意的是,该类型的键都是字符串类型,即所有当做键的对象都会调用toString()方法获得对应的字符串来作为键值保存对象。
Enum
枚举类型,如下:
enum Color {Red, Green, Blue};
var c: Color = Color.Green;
另一种格式:
enum Color {Red, Green, Blue};
var c: Color = Color[1];
同时还可以对每个枚举进行赋值,如下:
enum Color {Red = 1, Green, Blue};
var c: Color = Color.Green;
这样,Green自动被赋值为2,Blue自动被赋值为3。
也可以全部进行赋值:
enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;
我们还可以获得指定索引的枚举的名称:
enum Color {Red = 1, Green, Blue};
var colorName: string = Color[2];
alert(colorName);
需要注意的是,这里的值可以看做数组的下标,如下:
enum Color {Red = 100, Green, Blue};
var colorName: string = Color[101];
alert(colorName);//Green
数据转换
强制转换
将一个类型强制转换为另一个类型,如果转换失败编译时会报错,如下:
var str: string = <string> num;//转换成功
var strNum: number = <number> str;//编译报错
TypeScript中没有as关键字进行转换,都是强制转换。
instanceof
instanceof可以用来判断一个对象是否为指定的类型,如果是则返回true,否则返回false,如下:
if (obj instanceof String) {
alert("obj is string!");
}
typeof
可以获取类型的字符串描述:
typeof 3 // "number"
typeof "abc" // "string"
typeof {} // "object"
typeof true // "boolean"
typeof undefined // "undefined"
typeof function(){} // "function"
可参考:http://tobyho.com/2011/01/28/checking-types-in-javascript/
TypeScript学习笔记(二):基本数据类型及数据转换的更多相关文章
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Java学习笔记二:数据类型II
GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/Intpractice3.java 一 Java中的数据类型 Java ...
- python学习笔记(二):python数据类型
上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
随机推荐
- bzoj1934: [Shoi2007]Vote 善意的投票
最大流..建图方式都是玄学啊.. //Dinic是O(n2m)的. #include<cstdio> #include<cstring> #include<cctype& ...
- JSOI2008最大数(线段树)
注意到数列只增不减,而题目中又明确说道m<=200000;这样的数据规模线段树完全可以承受得了.所以我们可以事先建好一棵200000个子节点的线段树,然后求极值就好了. type node=re ...
- Java Web编程的主要组件技术——Struts入门
参考书籍:<J2EE开源编程精要15讲> Struts是一个开源的Java Web框架,很好地实现了MVC设计模式.通过一个配置文件,把各个层面的应用组件联系起来,使组件在程序层面联系较少 ...
- busybox filesystem matrix-gui-2.0 undefined function json_encode()
/******************************************************************************** * matrix-gui-2.0 u ...
- ssl选购
上机实践,参考了: http://www.lovelucy.info/nginx-ssl-certificate-https-website.html http://nginx.org/cn/docs ...
- RTP协议之Header结构解析
实时传输协议 RTP,RTP 提供带有实时特性的端对端数据传输服务,传输的数据如:交互式的音频和视频.那些服务包括有效载荷类型定义,序列号,时间戳和传输监测控制.应用程序在 UDP 上运行 RTP 来 ...
- 多线程程序设计学习(3)immutable pattern模式
Immutable pattern[坚不可摧模式] 一:immutable pattern的参与者--->immutable(不变的)参与者 1.1:immutable参与者是一个 ...
- Oracle 课程八之性能优化之Oracle SQL Trace
一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL ...
- android中sqlite3常用命令
1)打开数据库 在adb shell模式下执行命令sqlite3 + 数据库名称,例如打开email中的EmailProvider.db数据库: 2)sqlite3特殊命令 大多数候,sqlite3读 ...
- hdu 3948(后缀数组+RMQ)
题意:求一个串中有多少不同的回文串. 分析:这一题的关键是如何去重,我表示我现在还没理解为什么这样去重,先放这里过两天再看!! //不同回文子串数目 #include <iostream> ...