数据类型

我们来看看TypeScript中的基本数据类型都有哪些。

boolean

布尔值,支持true和false。

  1. var isDone: boolean = false;

默认为undefined,此时其和true与false判断都为false。

  1. var isDone: boolean;
  2.  
  3. function run() {
  4. alert(isDone == true);//false
  5. alert(isDone == false);//false
  6. }
  7.  
  8. run();

所以在使用boolean类型时要记得赋初值,以便避免以后的麻烦。

number

数字类型,如下:

  1. var height: number = 6;

首先,TypeScript中对于数字只有这么一种类型,没有byte、short、int、uint、long、float、double等类型,而TypeScript的number实际上是一个64为的双精度浮点数,可以看做其它语言中的double类型。

需要注意的是,当不进行初始赋值时,所有的基本数据类型都默认为undefined类型,下面不再重复讲解。

string

字符串类型,如下:

  1. var name: string = "bob";
  2. name = 'smith';

字符串的使用与JavaScript一致。

any

表示为任意类型,如下:

  1. var notSure: any = 4;
  2. notSure = "maybe a string instead";
  3. notSure = false;

我们发现notSure可以设定为任意的类型。

我们也可以将其用在数组上,如下:

  1. var list:any[] = [1, true, "free"];
  2. list[1] = 100;

undefined和null

null和undefined基本是同义的,只有一些细微的差别。

undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。

null表示"没有对象",即该处不应该有值。

参考:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

void

用在函数返回值,和C++、Java用法一致,表示没有返回值:

  1. function warnUser(): void {
  2. alert("This is my warning message");
  3. }

Array

数组类型,可以有两种写法,如下:

  1. var list:number[] = [1, 2, 3];
  2. var list:Array<number> = [1, 2, 3];

二维数组

  1. var num: string[][] = [["asdf", "zxc"],["adsf"]];

其它使用方法和JavaScript中一致。

Object

可以当做Hash表来使用,如下:

  1. var obj: Object = {};
  2.  
  3. function run() {
  4. obj["a"] = 123;
  5. //obj.b = "asdf";//这种写法是错误的
  6. obj["b"] = "asdf";
  7. obj[100] = true;
  8.  
  9. delete obj["100"];//删除使用 delete 关键字
  10.  
  11. for (var key in obj) {
  12. alert(key);
  13. alert(obj[key]);
  14. }
  15. }
  16.  
  17. run();

需要注意的是,该类型的键都是字符串类型,即所有当做键的对象都会调用toString()方法获得对应的字符串来作为键值保存对象。

Enum

枚举类型,如下:

  1. enum Color {Red, Green, Blue};
  2. var c: Color = Color.Green;

另一种格式:

  1. enum Color {Red, Green, Blue};
  2. var c: Color = Color[1];

同时还可以对每个枚举进行赋值,如下:

  1. enum Color {Red = 1, Green, Blue};
  2. var c: Color = Color.Green;

这样,Green自动被赋值为2,Blue自动被赋值为3。

也可以全部进行赋值:

  1. enum Color {Red = 1, Green = 2, Blue = 4};
  2. var c: Color = Color.Green;

我们还可以获得指定索引的枚举的名称:

  1. enum Color {Red = 1, Green, Blue};
  2. var colorName: string = Color[2];
  3. alert(colorName);

需要注意的是,这里的值可以看做数组的下标,如下:

  1. enum Color {Red = 100, Green, Blue};
  2. var colorName: string = Color[101];
  3. alert(colorName);//Green

数据转换

强制转换

将一个类型强制转换为另一个类型,如果转换失败编译时会报错,如下:

  1. var str: string = <string> num;//转换成功
  2. var strNum: number = <number> str;//编译报错

TypeScript中没有as关键字进行转换,都是强制转换。

instanceof

instanceof可以用来判断一个对象是否为指定的类型,如果是则返回true,否则返回false,如下:

  1. if (obj instanceof String) {
  2. alert("obj is string!");
  3. }

typeof

可以获取类型的字符串描述:

  1. typeof 3 // "number"
  2. typeof "abc" // "string"
  3. typeof {} // "object"
  4. typeof true // "boolean"
  5. typeof undefined // "undefined"
  6. typeof function(){} // "function"

可参考:http://tobyho.com/2011/01/28/checking-types-in-javascript/

TypeScript学习笔记(二):基本数据类型及数据转换的更多相关文章

  1. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. Java学习笔记二:数据类型II

    GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/Intpractice3.java 一  Java中的数据类型 Java ...

  3. python学习笔记(二):python数据类型

    上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各 ...

  4. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  10. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

随机推荐

  1. moment 和ko 绑定msdate格式的日期值(静态text)

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...

  2. createElement 创建DOM元素

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  3. [LA 3887] Slim Span

    3887 - Slim SpanTime limit: 3.000 seconds Given an undirected weighted graph G <tex2html_verbatim ...

  4. android Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)

    在Android群里,经常会有人问我,Android Log是怎么用的,今天我就把从网上以及SDK里东拼西凑过来,让大家先一睹为快,希望对大家入门Android Log有一定的帮助. android. ...

  5. [反汇编练习]160个CrackMe之001

    [反汇编练习] 160个CrackMe之001. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  6. substring函数——sql

    --substring( expression, start, length ) expression待截取的文字 start 截取位置的起始下标 length 要截取的长度 --左边第一个字符的下标 ...

  7. ORACLE之手动注册监听listener。alter system set local_listener="XXX"

    记录下刚刚做的一个为一个数据库(t02)配置多个监听(listener)的实验,过程有点小曲折. (1)新增两个测试的监听,listener.ora的配置内容(可纯手动编辑该文件或使用netca)如下 ...

  8. Linux Kernel 4.8分支第4个候选版本发布

    导读 今天,大神Linus Torvalds宣布了Linux 4.8分支的第四个候选版本,该候选版本在提供常规驱动更新.架构改善和部分KVM调整之外最大的新功能就是修复了英特尔Skylake电源管理B ...

  9. MultiSet

    Guava引进了JDK里没有的,但是非常有用的一些新的集合类型.所有这些新集合类型都能和JDK里的集合平滑集成.Guava集合非常精准地实现了JDK定义的接口.Guava中定义的新集合有: Multi ...

  10. Redis Sentinel机制与用法

    概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都 ...