本篇将简单介绍TypeScript的几种基本类型。

TypeScript基本类型有如下几种:

    • Boolean
    • Number
    • String
    • Array
    • Tuple
    • Enum
    • Any

另外还有void类型,主要用于标识方法返回值的类型。

下面通过一些简单的例子来展示这些类型的基本用法

 // Boolean
let isDone: boolean = false;
isDone = true; // Number
let num: number = 1; // 整数
num = 2.5; // 小数
num = 0xf00d; // 十六进制
num = 0b0101; // 二进制
num = 0o123; // 八进制 // String
let str: string = 'Hello world';
let content: string = `${str} too`; // 使用表达式拼接字符串时,需要使用(`)符号将拼接内容包括起来 // Array
let numbers1: number[] = [1, 2];
let numbers2: Array<number> = [1, 2, 3]; // 另外一种定义数组类型的方式,与nunber[]等价 // Tuple(元组类型)
let t: [string, number] = ['No.', 1];
t = ['This is No.', 2]; // 值类型与定义的一致,编译通过。
//t = [2, 'This is No.']; // 值类型与定义的不一致,编译失败,提示错误。 // Enum(枚举)
enum Operator1 { Add, Update, Delete, Select };
let opt1: Operator1 = Operator1.Add; // opt1的值为0。取枚举项的默认值。 enum Operator2 { Add = 1, Update, Delete, Select };
let opt2: Operator2 = Operator2.Update; // opt2的值为2。当某一项设置了值后,后续项的值都顺次加1。
let opt2Name: string = Operator2[2]; // opt2Name的值为Update。通过值索引可以得到枚举项的名称。

以上类型的声明都是强类型声明,也就是说对已经指定了明确类型的变量赋值另外类型的值时,某些IDE(VS 2015、VS Code和WebStorm)会在对应行显示错误标识。同时在编译时会提示编译错误,类似效果如下:

另外,Any类型是一个特殊的类型。它表示当前对象的类型由具体的值的类型来确定,它可以适用于任何强类型。

 // Any
let obj: any = 'This is a string.';
obj = 1;
obj = [1, 2];
obj = false;
obj = {};
obj = function () { return false; };

Any类型的值可以通过强制类型转换将值转换成目标类型

 // 强制类型转换
let obj1: any = 'This is a string.';
let len: number = (<string>obj1).length;
len = (obj1 as string).length;

将以上代码进行编译后将转换成ES5标准的JavaScript源码,如下

 // Boolean
var isDone = false;
isDone = true;
// Number
var num = 1; // 整数
num = 2.5; // 小数
num = 0xf00d; // 十六进制
num = 5; // 二进制
num = 83; // 八进制
// String
var str = 'Hello world';
var content = str + " too"; // 使用表达式拼接字符串时,需要使用(`)符号将拼接内容包括起来
// Array
var numbers1 = [1, 2];
var numbers2 = [1, 2, 3]; // 另外一种定义数组类型的方式,与nunber[]等价
// Tuple(元组类型)
var t = ['No.', 1];
t = ['This is No.', 2]; // 值类型与定义的一致,编译通过。
//t = [2, 'This is No.']; // 值类型与定义的不一致,编译失败,提示错误。
// Enum(枚举)
var Operator1;
(function (Operator1) {
Operator1[Operator1["Add"] = 0] = "Add";
Operator1[Operator1["Update"] = 1] = "Update";
Operator1[Operator1["Delete"] = 2] = "Delete";
Operator1[Operator1["Select"] = 3] = "Select";
})(Operator1 || (Operator1 = {}));
;
var opt1 = Operator1.Add; // opt1的值为0。取枚举项的默认值。
var Operator2;
(function (Operator2) {
Operator2[Operator2["Add"] = 1] = "Add";
Operator2[Operator2["Update"] = 2] = "Update";
Operator2[Operator2["Delete"] = 3] = "Delete";
Operator2[Operator2["Select"] = 4] = "Select";
})(Operator2 || (Operator2 = {}));
;
var opt2 = Operator2.Update; // opt2的值为2。当某一项设置了值后,后续项的值都顺次加1。
var opt2Name = Operator2[2]; // opt2Name的值为Update。通过值索引可以得到枚举项的名称。
// Any
var obj = 'This is a string.';
obj = 1;
obj = [1, 2];
obj = false;
obj = {};
obj = function () { return false; };
// 强制类型转换
var obj1 = 'This is a string.';
var len = obj1.length;
len = obj1.length;

其他相关内容

在新的ECMAScript 2015标准里,为了解决变量提升,简化块级作用域的实现方式,对变量的声明增加了两个关键词:let和const。

    • const:常量。一旦声明赋值后,将不能对此变量进行再次赋值。
    • let:块级作用域变量。变量的生命周期只在被{}括号包裹的代码范围内有效,且不能重复声明。

在新的标准下编写JavaScript代码时,要遵循“多let少var”的规范。

TypeScript学习笔记(二) - 基本类型的更多相关文章

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

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

  2. C#学习笔记二: C#类型详解

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  3. TypeScript学习笔记之基础类型

    从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下n ...

  4. TypeScript学习笔记之接口类型

    TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约.当然,和java中的用法基本一致,接口可以被继承也可以被实现. 定义一个简单的interface interf ...

  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 学习笔记五:类

    中文网: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. Typescript 学习笔记四:回忆ES5 中的类

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

随机推荐

  1. Linux下安装系统清理软件 BleachBit 1.4

    sudo add-apt-repository ppa:n-muench/programs-ppasudo apt-get updatesudo apt-get install bleachbit

  2. ng-深度学习-课程笔记-13: 目标检测(Week3)

    1 目标定位( object localization ) 目标定位既要识别,又要定位,它要做的事就是用一个框框把物体目标的位置标出来. 怎么做这个问题呢,我们考虑三目标的定位问题,假定图中最多只出现 ...

  3. SpringCloud配置

    encrypt说明 名称 默 认 描述 encrypt.fail-on-error true 标记说,如果存在加密或解密错误,进程将失败. encrypt.key   对称密钥.作为一个更强大的替代方 ...

  4. 免费美女视频聊天,多人视频会议功能加强版本(Fms3和Flex开发(附源码))

    Flex,Fms3系列文章导航 Flex,Fms3相关文章索引 本篇是视频聊天,会议开发实例系列文章的第4篇,该系列所有文章链接如下: http://www.cnblogs.com/aierong/a ...

  5. qq空间相册下载

    qq空间相册下载 描述 目前功能只可以下载 单个相册 程序基本是3个独立分开的部分. 解析(某一用户)所有相册 解析(单个)相册所有图片地址并写文件 根据文件下载图片 目的 只要有权限可以访问到的相册 ...

  6. 20145329 《网络对抗技术》MS08_067远程漏洞攻击

    MS08_067远程漏洞攻击:shell 实现攻击的前提是:攻击机和靶机在同一个网段下,首先将kali的ip改为与winxp的ip一样,二者能ping通 两台虚拟机: kali ip:192.168. ...

  7. 构建一个简单的Linux系统 MenuOs —— start_kernel到init进程(20135304刘世鹏)

    构建一个简单的Linux系统 MenuOs —— start_kernel到init进程 作者:刘世鹏20135304 <Linux内核分析>MOOC课程http://mooc.study ...

  8. cygwin安装方法

    一.环境 OS:windows 二.安装cygwin以及各类cygwin下的软件 2.1 从官网http://www.cygwin.com/获取最新的版本 2.2 安装过程如下图

  9. UVa 11732 strcmp()函数(左孩子右兄弟表示法)

    #include<iostream> #include<algorithm> #include<string> #include<cstring> #i ...

  10. java学习之浅谈多线程4--SwingWorker

    GUI事件处理和绘图代码在一个被称为事件分发线程的特殊线程中执行.如果一个事件需要很长的时间处理,线程就不能顾及到队列中的其他任务.为了解决这个问题,可以运行费时的任务来处理单独线程中的事件.Swin ...