一,变量声明

TypeScript是JavaScript的超集,在变量声明方式方面,关键字是和JavaScript保持一致的,并且推荐较新的 letconst 代替 var 。至于为什么这样做,相信用过JavaScript的应该都知道,这里就不多加赘述了。

区别就在于,TypeScript在定义变量时会声明变量的类型。

举个最简单的例子,在JavaScript中定义一个string,我们是这样写的

let name = 'Kris';

但是在TypeScript中就多了一个类型

let name: string = 'Kris';

注意,我们在这使用的是string,而不是String。区别我们稍后就讲。
也许会有人问:string,是不是必须得写呢?这里提前透露一下,有些时候也不是必须的。这里后面文章会讲到。

二,数据类型

保持和JavaScript一致的类型

TypeScript支持与JavaScript几乎相同的原始数据类型。其中包括:布尔值(boolean),数值(number),字符串(string),nullundefined 和 Symbol(ES6中的新类型)。以及对象类型Array和Object

1,boolean类型

使用boolean定义类型,很简单:

let isDone: boolean = false;
isDone = true;

大家再看看下面这个变量的声明有没有什么问题

let testBoolean: boolean = new Boolean();

答案如下:

Boolean是JavaScript中构造函数,new Boolean() 返回的是一个对象。这和上面使用 string 而不是String来声明类型是一个道理。

2,number类型

和JavaScript一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript还支持ES6中引入的二进制和八进制字面量。但是二进制和八进制在编译时会被编译成十进制数字。

let num1: number = 20;
let num2: number =  0xf00d;
let num3: number = 0b1010;
let num4: number =  0o744;

3,string类型

使用单引号或者双引号表示,同时也支持 ES6 的模板字符串。

let str: string = "TypeScript!";
let name: string = 'Kris';//使用模版字符串拼接
let message: string = `Hello ${name}`;

4,null和undefined

默认情况下,nullundefined 时所有类型的子类型,他们的值也是nullundefined,可以把他们赋值给其他类型的变量。

let u: undefined = undefined;
let n: null = null;let str = 'hello';
// 编译通过
str = undefined;

5,数组

两种方式,直接使用[] 或者泛型。一般推荐使用第一种方式。

// 元素类型后接[]
let list: string[] = ['a', 'b', 'c'];//数组泛型 Array<元素类型>
let list: Array<number> = [1, 2, 3];

6, Object

object表示非原始类型,可以用来描述一个对象,因为接口和类的存在,用的不是那么多。不过像Object.create这样的API,就可以用到。

declare function create(o: object | null): void;// 定义一个空对象
let o: object = {};

7,Symbol类型

Symbol是ES6中新增的一个类型。他的值通过Symbol函数生成,表示独一无二的值。基本用法如下:

let s1 = Symbol();
let s2 = Symbol();typeof s
// "symbol"s1 === s2
//falselet sym2 = Symbol("key"); // 可选的字符串key

此处不作详细解释,大家可以去阮一峰的 ES6 入门中关于Symbol的文章。

TypeScript中特有的类型

1,元组Tuple

tuple 可以用来定义一个已知元素数量和类型的数组,类型可以是随意的,但是必须和顺序一一对应。

let t: [string, number, boolean] = [1, 2, 3]; // 会报错// 正确
let t: [string, number, boolean] = ['a', 2, true];

2,枚举Enum

enum,Java或者C#开发者就很熟悉了。这里先介绍简单的如何定义。还可以通过数值得到定义的string值,这个在实际开发中也用的比较多

enum Fruits {Apple, Banana, Orange}let a: Fruits = Fruits.Apple; // 0let o: string = Fruits[2]; // 'Orange'

3,Any

万能的any大法,哈哈。可能直接JavaScript开发者刚接触TypeScript是比较喜欢用anyany表示可以使任何类型,我不清楚或者不想给他指定类型就可以用这个。

let notSure: any;// 以下都不回报错
notSure = 1;
notSure = 'a';
notSure = false;let list: any[] = [2, 'b', true];

4,Void

void表示没有任何类型,只能赋值undefinednull。一般用在函数的返回值类型上;

let unusable: void = null;function showName(): void {alert('Tom');
}

5,Never类型

never类型表示的是那些永不存在的值的类型。

例如:抛出异常的函数,不会有返回值。以及无限循环的函数。

function throwError(msg: string): never {throw new Error(msg);
}// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {while (true) {}
}

三,类型断言

有点像强制类型转换的那个意思,但是仅仅是意思。当自己确切的知道某个值的类型时,可以将一个值断言成某种类型。编译器不会进行特殊的数据检查。

两种方式:

// “尖括号”语法
let userName: any = "Mike";
let nameLenght: number = (<string>userName).length// as语法
let userName1: any = "Mike";
let nameLenght1: number = (userName1 as string).length;

本文对TypeScript 中的常用类型做了简单的介绍,相信已经对TypeScript类型有了初步的理解。接下来的文章在再让我们更深入的学习和使用TypeScript。

可以声明一个抽象类类型变量_TypeScript系列(二)变量声明和数据类型相关推荐

  1. C/C++系列之变量声明与使用——新手必须掌握的基础技能二

    变量声明与使用 一.C/C++中的基本数据类型 二.C/C++ 中的保留关键字 三.变量声明与使用 1.变量的声明方式 1.1.变量声明而未初始化下的垃圾数据 1.2.变量声明与初始化 2.变量的使用 ...

  2. (1)声明一个圆柱体类型,(2)声明属性:底边的半径,和高(3)声明方法:A:方法的功能:在方法中打印圆柱体的详细信息:圆柱体的底边的半径是xxx,高是xxx,底面积是xxx,体积是xxx。B

    //(1)声明一个圆柱体类型, //(2)声明属性:底边的半径,和高 //(3)声明方法: //A:方法的功能:在方法中打印圆柱体的详细信息:圆柱体的底边的半径是xxx,高是xxx,底面积是xxx,体 ...

  3. java定义一个指针类型变量赋值吗,C++中指针的数据类型和运算相关知识小结

    C++有关指针的数据类型和指针运算的小结 前面已用过一些指针运算(如p++,p+i等),现在把全部的指针运算列出如下. 1) 指针变量加/减 一个整数 例如:p++,p--,p+i,p-i,p+-i, ...

  4. 变量的三重属性_TypeScript基础入门 - 变量声明(三)

    转载地址TypeScript基础入门 - 变量声明(三)​www.gowhich.com 项目实践仓库 https://github.com/durban89/typescript_demo.gitt ...

  5. 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事(http://www.cnblogs.com/zhouyongtao/archive/2012/11/22/2783089)

    //Firefox 17下运行结果 function a(){} undefined [function a(){}, 2, 3] ee 444 6 ========================= ...

  6. php变量 声明提升,TypeScript:let和const变量声明

    在开始介绍let和const变量声明前,有必要先了解下JavaScript里的var变量声明. var变量声明 全局声明 var声明在函数体外,所声明的变量为全局变量.var name = " ...

  7. php声明一个抽象类,如何在PHP中的非抽象类中声明抽象方法?

    class absclass { abstract public function fuc(); } 报告: PHP Fatal error: Class absclass contains 1 ab ...

  8. php中声明一个函数,php学习笔记之 函数声明

    /* 函数定义: * 1.函数是一个被命名的 * 2.独立的代码段 * 3.函数执行特定任务 * 4.并可以给调用它的程序返回一个值 * * 函数的优点: * 1.提高程序的重用性 * 2.提高程序的 ...

  9. Python学习二——变量和简单数据类型

    修改字符串的大小写 title():以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写. 合并(拼接)字符串 Python使用加号(+)来合并字符串. 删除空白 rstrip():剔除字符 ...

最新文章

  1. MMD_5a_Clustering
  2. Linux: /dev/fd/详解
  3. 计算机计组成原理课后,计算机组成原理课后习题课(0001).doc
  4. 知识体系地图模型:你是如何有效地学习?
  5. java.io.file()_Java IO(一):IO和File
  6. 双目摄像头 三维坐标 python_时间编码单像素三维成像:挑战三维成像的速度极限...
  7. LeetCode Algorithm 268. 丢失的数字
  8. python中count()函数的用法
  9. 2263: neighbor(贪心)
  10. 痛!做C#半年,挣的不如做AI1个月?”看到第二句泪目……
  11. 限量!“Java 成长笔记” Spring Boot/Sentinel/Nacos 高并发
  12. PHP实现zip字典破解
  13. 因使用盗版软件赔偿 869 万元 :CIO被开除、罚 15 万元
  14. Office2010安装需要MSXML版本6.10.1129.0的方法
  15. Matlab/Simulink中信号线拉成斜线的方法
  16. sparse_categorical_crossentropy的使用
  17. 爱思助手无法连接或者连接超时解决办法
  18. 写一个python程序、求解使得npv值为零的折现率_计算题专题:净现值NPV分析与习题...
  19. 面试:HTTP Host 头攻击,是什么?
  20. Dynamic ARP Inspection

热门文章

  1. 【Erlang新手成长日记】Erlang开源项目推荐
  2. Backup and Recovery Basics1
  3. opencv2对于读书笔记——二值化——thresholded功能
  4. 深入理解Linux系统中的用户和组账号
  5. Hibernate查询技术(2)
  6. WINDOW7下 配置APACHE+PHP 无法加载MYSQL 的问题
  7. Android 创世纪 第三天
  8. 详解ThroughTek P2P 供应链漏洞对数百万物联网设备的安全新风险
  9. Google Update Service 被曝提权 0day,谷歌拒绝修复
  10. 特斯拉起诉离职员工窃取机密代码和文件